经过 1 个半小时的谷歌搜索后,我尝试了许多脚本,但所有脚本要么给出了错误的四舍五入数字,要么给出了错误的值。这是我尝试过的两个脚本。
FIRST TRY:
Number.prototype.round = function(p) {
p = p || 10;
return parseFloat( this.toFixed(p) );
};
SECOND TRY:
function roundNumber(number, decimals) {
var newnumber = new Number(number+'').toFixed(parseInt(decimals));
return parseFloat(newnumber);
}
我从两者获得的一些示例输出:
0.22 -> 0.21480000000000005 (bad) should be 21
0.43 -> 0.4284 (good) 43 is right
我做错了什么?任何帮助将不胜感激,因为这已经让我摸索太久了。
最佳答案
为什么不使用这样的东西:
Math.round(yourNumber * 100) / 100;
这会将其四舍五入到小数点后两位,同样的问题或多或少在这里得到了回答 - Round to at most 2 decimal places (only if necessary)
这是一个小例子
function round(num){
var result = Math.round(num * 100) / 100;
return console.log(result);
}
round(0.4284);
Fiddle 在这里进行测试:https://jsfiddle.net/ToreanJoel/bLzz2mL8/
关于javascript - 为什么某些四舍五入的 JavaScript 值以错误的方式四舍五入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30172935/