我正面临一个问题,如果有人向我解释我的功能出了什么问题,我会很喜欢。正好有两位小数的格式编号问题
见下面的代码:
如果用完=>数(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