我有百分比計算和舍入結果的以下問題。JavaScript中舍入問題
如果我使用Math.ceil
:
var total = 66666;
var test1 = Math.ceil(60/100 * total);
var test2 = Math.ceil(23.5/100 * total);
var test3 = Math.ceil(14/100 * total);
var test4 = Math.ceil(2.5/100 * total);
然後test1 + test2 + test3 + test4 = 66664
如果我使用ParseInt
:
var total = 66666;
var test1 = parseInt(60/100 * total);
var test2 = parseInt(23.5/100 * total);
var test3 = parseInt(14/100 * total);
var test4 = parseInt(2.5/100 * total);
然後test1 + test2 + test3 + test4 = 66668
我試圖從Python的重寫我的腳本爲Javascript和我ñPython我沒有這樣的問題。
這是相反的:'Math.ceil'輪向上,所以你得到'66668'。 'parseInt'會轉換爲字符串,並將點之前的部分再次解析爲一個數字,就像'Math.trunc'一樣(但速度較慢),您會得到'66664'。 – Oriol 2015-01-21 10:04:24
我不明白這個問題。如果你把你的數字四捨五入,這些會有一些錯誤。當你總結這些數字時,錯誤可以相互抵消,或者加起來。如果你不喜歡那樣,不要繞。 – Oriol 2015-01-21 10:09:54
確實。你正在比較蘋果和橙子 - 「parseInt」與「Math.floor」將是一個更好的比較。這是[性能差異](http://jsperf.com/math-floor-vs-math-round-vs-parseint/55) – 2015-01-21 10:09:55