javascript - 为什么某些四舍五入的 JavaScript 值以错误的方式四舍五入?

标签 javascript math rounding

经过 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/

相关文章:

javascript - useSelector() 显示了 promise ,而不是来自商店的更新值

javascript - 根据缩放比例平移 map (如何计算)

algorithm - 绘制圆弧点

mysql - 存储在 MySQL 中的浮点值不断变得困惑

python - 同时舍入列表中的单独值

java - 如果我将 long 数据类型分配给 float 数据类型,为什么会出现舍入错误?

javascript - 编写自定义 .on()/.bind() JavaScript 的最高效方式

javascript - 如何将本地文本文件读入数组列表Javascript

javascript - 如何在 Jquery 中使用复选框选择元素时删除该元素?

java - 在java中计算(a^b)%m