这是对我关于converting string to float的上一个问题的跟进
我把这个值存储在一个浮点变量中:33.9112625美元(它是33),我需要把它转换成字符串,并得到确切的值,但我无法做到这一点。(CultureInfo.InvariantCulture)返回的结果为“33.91126”。我尝试了。(“G”)、“G7”和CultureInfo.InvariantCulture.NumberFormat,但它们没有帮助。如何将浮点型转换为字符串并获得完全相同的值?
这是对我关于converting string to float的上一个问题的跟进
我把这个值存储在一个浮点变量中:33.9112625美元(它是33),我需要把它转换成字符串,并得到确切的值,但我无法做到这一点。(CultureInfo.InvariantCulture)返回的结果为“33.91126”。我尝试了。(“G”)、“G7”和CultureInfo.InvariantCulture.NumberFormat,但它们没有帮助。如何将浮点型转换为字符串并获得完全相同的值?
3条答案
按热度按时间yc0p9oo01#
首先,你没有在一个float(System.Single)中保存“精确的”值,详细信息请参见David Goldberg's article on floating point precision。
也就是说,如果你想转换这个值,你需要为Single.ToString()指定额外的精度。通过使用“G”,你会得到默认的精度,也就是7。在你的例子中,要看到你所显示的值,你需要9,所以你可以使用“G9”。
ulydmbyx2#
Jon Skeet提供了an article explaining这个沿着和C#代码来打印精确的表示。
b5lpy0ml3#
尝试将其更改为
Decimal
类型,我尝试使用float
,但它只显示5个小数位。希望这能帮上忙,最好的问候,汤姆。