.net 将浮点数转换为字符串并获取精确值

1l5u6lss  于 2023-02-10  发布在  .NET
关注(0)|答案(3)|浏览(135)

这是对我关于converting string to float的上一个问题的跟进
我把这个值存储在一个浮点变量中:33.9112625美元(它是33),我需要把它转换成字符串,并得到确切的值,但我无法做到这一点。(CultureInfo.InvariantCulture)返回的结果为“33.91126”。我尝试了。(“G”)、“G7”和CultureInfo.InvariantCulture.NumberFormat,但它们没有帮助。如何将浮点型转换为字符串并获得完全相同的值?

yc0p9oo0

yc0p9oo01#

首先,你没有在一个float(System.Single)中保存“精确的”值,详细信息请参见David Goldberg's article on floating point precision
也就是说,如果你想转换这个值,你需要为Single.ToString()指定额外的精度。通过使用“G”,你会得到默认的精度,也就是7。在你的例子中,要看到你所显示的值,你需要9,所以你可以使用“G9”。

ulydmbyx

ulydmbyx2#

Jon Skeet提供了an article explaining这个沿着和C#代码来打印精确的表示。

b5lpy0ml

b5lpy0ml3#

尝试将其更改为Decimal类型,我尝试使用float,但它只显示5个小数位。

decimal d = 33.9112625M;
Console.WriteLine("{0}", d.ToString(System.Globalization.InvariantCulture));

希望这能帮上忙,最好的问候,汤姆。

相关问题