浮动精度float.Parse丢失(floating precision lost in float

2019-10-21 19:00发布

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

现在s的值为10499.97

有没有一种方法来保存所有的精​​密数字?

Answer 1:

你可能想看看进入浮动,双,和小数之间的差异 。 要特别注意二进制浮点类型之间的区别,以及一个十进制浮点类型。 十进制数据类型可能是你在找什么在这里,浮法没有足够显著数字来存储你想准确分析的数量。



Answer 2:

尝试使用数据类型具有更高的精度比float ,如double 。 你的价值的剩余的数字,由于数据类型的大小被截断float

double s = double.Parse("10499.9705314636");
Console.WriteLine(s);

打印:

10499.9705314636



Answer 3:

你应该尝试使用decimal来代替。



文章来源: floating precision lost in float.Parse