将float转换为字符串并获取精确值

时间:2010-02-15 21:22:00

标签: .net string floating-point

这是我关于converting string to float

的上一个问题的后续跟进

我将此值存储在一个浮点变量中: 33.9112625 (它是三十三个)我需要将其转换为字符串并获取确切的值,但我无法这样做。 float.ToString(CultureInfo.InvariantCulture)给了我“33.91126”的结果。我试过.ToString(“G”),“G7”和CultureInfo.InvariantCulture.NumberFormat,但他们没有帮助。如何将float转换为字符串并获得完全相同的值?

3 个答案:

答案 0 :(得分:8)

首先,您没有在float(System.Single)中保存“exact”值。有关详细信息,请参阅David Goldberg's article on floating point precision

话虽这么说,如果你想转换它,你需要为Single.ToString()指定额外的精度。通过使用“G”,您得到default precision,即7.在您的情况下,要查看您显示的值,您需要9,因此您可以使用“G9”。

答案 1 :(得分:5)

Jon Skeet提供an article explaining这个以及C#代码来打印确切的表示。

答案 2 :(得分:1)

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

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

希望这有帮助, 最好的祝福, 汤姆。