2016-08-04 138 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%準確的。