【问题标题】:how to round digit if third decimal digit is greater than zero in javascript?如果javascript中的第三个十进制数字大于零,如何舍入数字?
【发布时间】:2022-07-07 19:16:38
【问题描述】:

是否可以使用 javascript 对数字进行舍入。 条件:我们需要显示数字到小数点后两位。如果第三个小数位大于零,我需要四舍五入。

function roundNumberV1(num, scale) {
    if(!("" + num).includes("e")) {
        return +(Math.round(num + "e+" + scale)  + "e-" + scale);
    } else {
        var arr = ("" + num).split("e");
        var sig = ""
        if(+arr[1] + scale > 0) {
            sig = "+";
        }
        var i = +arr[0] + "e" + sig + (+arr[1] + scale);
        var j = Math.round(i);
        var k = +(j + "e-" + scale);
        return k;
    }
}


console.log(roundNumberV1(110.3724 ,2))

预期输出:110.38 当前输出:110.37

如果您看到数字 2(小数点后三位)大于零。我需要增加第二个小数位

【问题讨论】:

标签: javascript


【解决方案1】:

为了完全简化它,只需将它乘以十进制幂(基本上是10^rounding,或者100,如果你输入2),然后Math.round它,然后用相同的数字除以它,然后使用toFixed 删除剩余的小数:

function roundNumberV1( value, scale ){

  const power = Math.pow( 10, scale );
  
  return (Math.ceil(value * power) / power).toFixed( scale );
  
}

console.log( roundNumberV1( 110.3724, 2 ) );

这不是您应该对数字进行四舍五入的方式 - 如果您后面的数字高于 5toFixed 将正确四舍五入,但这适用于您的情况。

【讨论】:

  • 这不是已经回答了here吗?
  • 当然,可能是,我没有在谷歌上搜索。在这种情况下,用那个来结束这个问题。将我的投票添加到最后。不想在这里抢风头,只是即时回答。
【解决方案2】:

您正在使用复杂的方法只需将 Math.round() 与 10 相乘即可

num = 110.3724
let x = Math.round(num*10);
//then you will get x as 1103.7
//Now again divide x by 10 

希望对你有帮助

【讨论】:

  • 请重新阅读问题。 OP 期望输出为 110.38 而not 110.37。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多