我試圖截斷C#中的一系列雙精度值。無論使用什麼舍入方法,以下值都會失敗。這個值導致這兩種方法失敗的問題是什麼?爲什麼即使Math.Round
未能正確截斷數字?可以使用什麼方法來正確截斷這些值?舍入到specfic數字失敗,這個雙精度值
值:
double value = 0.61740451388888251;
方法1:
return Math.Round(value, digits);
方法2:
double multiplier = Math.Pow(10, decimals)
return Math.Round(value * multiplier)/multiplier;
即使在VS觀看無線失敗ndow!
浮點類型不能代表所有可能的值,這意味着這大概是0.62儘可能最接近。 – 2014-12-05 19:45:59
爲什麼downvote?這是一個非常令人困惑的問題,絕不是初學者的問題。你不明白這個問題的前提嗎? – 2014-12-05 19:46:54
@JordiVermeulen - 'double'肯定可以正確表示0.62。 – 2014-12-05 19:47:37