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

kar*_*tal 2 c# string double formatting

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

double i = 101535479557522.5; 
i.ToString(); //displays 101535479557523
Run Code Online (Sandbox Code Playgroud)

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

por*_*ges 9

如果你想要它完全相同你应该使用i.ToString("r")("r"用于往返).您可以在MSDN上阅读有关不同数字格式的信息.


Jon*_*eet 5

你正在达到Double精度的极限.来自文档:

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

如果您想要更高的精度 - 尤其是维持十进制表示 - 您应该考虑使用该decimal类型.