我想使用ToString()
打印出double的字符串表示而不会丢失精度当我尝试将其重新格式化为字符串时,我得到以下内容:
double i = 101535479557522.5;
i.ToString(); //displays 101535479557523
如何在C#中执行此操作?
答案 0 :(得分:9)
如果您希望它完全相同,您应该使用i.ToString("r")
(“r”用于往返)。您可以阅读不同的numeric formats on MSDN。
答案 1 :(得分:5)
你正在达到Double精度的极限。来自the docs:
请记住,浮点数只能近似一个十进制数,并且浮点数的精度决定了该数字接近十进制数的准确程度。默认情况下,Double值包含15个十进制数字的精度,但内部最多保留17位数。
如果你想要更高的精确度 - 特别是保持十进制表示 - 你应该看一下使用decimal
类型。