2016-08-04 96 views
0

在MSSQL中,
COST_C (float)浮点数字不准确

在模型中,
[DisplayFormat(DataFormatString = "{0:0,0}", ApplyFormatInEditMode = true)] public double COST_C { get; set; }

看来,
<input name="COST_C" class="form-control" value="@ViewBag.costC" />

在控制器,
ViewBag.costC = Convert.ToDecimal(project.COST_);

当控制器更新COST_C,页面上的价值后更新成为不同.....
1000.00成为1000
1000.20成为1000.20001220703
1000.18成为1000.17999267578

我怎么可以把它到底是什么?

+3

可能重复[浮点数学是否被破坏?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –

回答

0

这就是浮点的一般问题。您的价值的准确性取决于您的号码的大小。如果你有一个很大的数字,你不能可靠地表达高精度的小数位。数据类型本身是有限的,不能表达每一个数字。

如果它是您的一个选项(并且您确实需要这种精度),您可以将小数点位置分隔到新的浮点变量中以实现更高的精度。

如果您只想显示正确的值,您可以格式化您的值,如%.2f,但您可能需要预先舍入值。你仍然不是100%准确的。