漂浮精度在float.Parse中丢失

时间:2015-02-03 14:06:53

标签: c# .net parsing floating-point

float s = float.Parse("10499.9705314636");

现在s的值为10499.97

有没有办法保存所有精确数字?

3 个答案:

答案 0 :(得分:6)

您可能需要查看difference between float, double, and decimal。请特别注意二进制浮点类型和十进制浮点类型之间的区别。十进制数据类型很可能是您在这里寻找的,因为浮点数没有足够的有效数字来存储您尝试准确解析的数字。

答案 1 :(得分:4)

尝试使用精度高于float的数据类型,例如double。由于数据类型float的大小:

,您的值的其余数字将被截断
double s = double.Parse("10499.9705314636");
Console.WriteLine(s);

打印:

  

10499.9705314636

答案 2 :(得分:2)

您应该尝试使用decimal代替。