我有一個四捨五入浮點值的問題。 我有一個浮點值設置爲0.8,但在C#代碼它以某種方式0.80000000000000004。如何在c#中舍入float值?
所以我想圓它,所以它成爲0.8。
我曾嘗試:
float roundedFloatvalue = (float)Math.Round((Decimal)floatvalue, 2, MidpointRounding.AwayFromZero);
和:
float roundedFloatvalue = Truncate(floatvalue, 2);
public static float Truncate(float value, int digits)
{
double mult = Math.Pow(10.0, digits);
double result = Math.Truncate(mult * value)/mult;
return (float)result;
}
這似乎只是我不能讓0.80000000000000004是0.8,我不知道爲什麼任何上述不工作的。
你在乎'0.00000000000000004'區別?無論如何,閱讀此:http://floating-point-gui.de/ – Blorgbeard
可能重複的[爲什麼不能十進制數字完全用二進制代表?](http://stackoverflow.com/questions/1089018/why-無法精確的十進制數字被表示爲精確的二進制) – dan04