我正面臨一個問題,如果有人向我解釋我的功能出了什麼問題,我會很喜歡。正好有兩位小數的格式編號問題
見下面的代碼:
如果用完=>數(10000.88,2)
任何人都可以解釋我爲什麼代替10000.88
其中如果我運行數輸出10000.87(11111.88 ,2)輸出正確11111.88 所有其他輸出都是正確的。
function number(value, decPos) {
return Math.floor(Math.abs(value) * Math.pow(10, decPos))/Math.pow(10, decPos);
}
document.write("<div>" + number(10, 2) + '</div>');
document.write("<div>" + number(10.8888, 2) + '</div>');
document.write("<div>" + number(100.8888, 2) + '</div>');
document.write("<div>" + number(1000.88, 2) + '</div>');
document.write("<div>" + number(10000.888, 2) + '</div>');
// magic
document.write("<div>" + number(10000.88, 2) + '</div>');
document.write("<div>" + number(100000.8888, 2) + '</div>');
// magic
document.write("<div>" + number(8368.88, 2) + '</div>');
document.write("<div>" + number(11111.8888, 2) + '</div>');
document.write("<div>" + number(11111.88, 2) + '</div>');
<div id="result"></div>
你有沒有意識到有toFixed()? – epascarello
可能重複[浮點數學是否被破壞?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – HPierce
舍入錯誤... – brso05