我正在使用.Net Web API返回雙倍的信息。在我返回之前,我將這些雙打圈數保留到小數點後兩位。當我打印它們時,我得到(f.e):145,92。非常棒。但是,當我返回雙,我的JSON響應與這樣的雙重創建:.NET Web API返回大量小數位後的雙精度值
「小時」:145.92000000000002
什麼是創造這一問題的任何想法?
我的舍入函數爲:
public double ApplyRounding(double value, int digits)
{
decimal decValue = (decimal)value;
// First round is to fix rounding errors by changing things like 0.99499999999999 to 0.995
decValue = Math.Round(decValue, digits + 5, MidpointRounding.AwayFromZero);
decValue = Math.Round(decValue, digits, MidpointRounding.AwayFromZero);
return (double)decValue;
}
感謝
這是C#如何解釋'double'。對於小數,'double'不具有與'float'相同的浮點精度。使用'float'來更精確地表示你的十進制數。 –
@AlexBarac你的意思是'decimal'而不是'float'嗎? – oleksii
@oleksii不......我曾經工作過一個僞隨機生成器程序,由於double操作創建的舍入問題,這個程序的執行效率很差,因爲double操作和float操作都非常好,這似乎是OP的問題 –