在C#中正确地将double格式化为字符串?

时间:2011-01-20 23:27:39

标签: c# string formatting double

我想使用ToString()打印出double的字符串表示而不会丢失精度当我尝试将其重新格式化为字符串时,我得到以下内容:

double i = 101535479557522.5; 
i.ToString(); //displays 101535479557523

如何在C#中执行此操作?

2 个答案:

答案 0 :(得分:9)

如果您希望它完全相同,您应该使用i.ToString("r")(“r”用于往返)。您可以阅读不同的numeric formats on MSDN

答案 1 :(得分:5)

你正在达到Double精度的极限。来自the docs

  

请记住,浮点数只能近似一个十进制数,并且浮点数的精度决定了该数字接近十进制数的准确程度。默认情况下,Double值包含15个十进制数字的精度,但内部最多保留17位数。

如果你想要更高的精确度 - 特别是保持十进制表示 - 你应该看一下使用decimal类型。