我想打印出双串represenation不使用ToString()
损失精度我得到的,当我尝试进行格式化为一个字符串如下:在C#中正确格式化一个双精度字符串?
double i = 101535479557522.5;
i.ToString(); //displays 101535479557523
如何在C#这样做吗?
我想打印出双串represenation不使用ToString()
损失精度我得到的,当我尝试进行格式化为一个字符串如下:在C#中正确格式化一个双精度字符串?
double i = 101535479557522.5;
i.ToString(); //displays 101535479557523
如何在C#这样做吗?
如果你想要它完全一样,你应该使用i.ToString("r")
(“r”用于往返)。你可以阅读有关不同的numeric formats on MSDN。
您正遇到Double精度限制。从the docs:
记住,浮点数只能近似一个十进制数,而一个浮点数的精度确定数目如何准确地近似一个十进制数。默认情况下,Double值包含15位精度的十进制数字,但内部最多保留17位数字。
如果你想要更高的精度 - 特别是保持十进制表示 - 你应该看看使用decimal
类型来代替。
我再次添加数字后忽略.5 !! – kartal
这完全是另一个问题:)通过回答Jon的回答下面... – porges