浮点数不准确

时间:2016-08-04 06:55:29

标签: asp.net-mvc floating-point

在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

我怎样才能确切地说它是什么?

1 个答案:

答案 0 :(得分:0)

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

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

如果您只想显示正确的值,可以将值设置为%.2f,但您可能需要预先对值进行舍入。你仍然不是100%准确。