Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在js中以负精度舍入一个数字,就像在Excel舍入函数中一样_Javascript_Node.js_Math - Fatal编程技术网

Javascript 如何在js中以负精度舍入一个数字,就像在Excel舍入函数中一样

Javascript 如何在js中以负精度舍入一个数字,就像在Excel舍入函数中一样,javascript,node.js,math,Javascript,Node.js,Math,我正在尝试将值从8904000四舍五入到8900000。是否有任何可能的方法使用Math.round更改此值。 MS Excel中的示例 =round(8904000,-5); ANS: 8900000 我尝试了下面的代码,但Math.round不接受第二个参数 Math.round(8904000,-5); ANS: 8904000 简言之,我想把这个数字四舍五入到最接近的100000 所以5300*56*30=8904000变成8900000 Math.round(value

我正在尝试将值从8904000四舍五入到8900000。是否有任何可能的方法使用Math.round更改此值。 MS Excel中的示例

=round(8904000,-5);
ANS: 8900000      
我尝试了下面的代码,但Math.round不接受第二个参数

Math.round(8904000,-5);
ANS: 8904000
简言之,我想把这个数字四舍五入到最接近的100000

所以5300*56*30=8904000变成8900000

Math.round(value/1000000)*1000000
除以取整的
单位
,因此
1000000
Math.round()
数字,然后用指定的
单位
乘以,试试这个

function roundDown(number, decimals) {
    decimals = decimals || 0;
    return ( Math.floor( number * Math.pow(10, decimals) ) / Math.pow(10, decimals) );
} 

roundDown(8904000, -5)

四舍五入到小数位的常见解决方案是:

  • 使用
    Number.prototype.toFixed()
  • 浮点值
    乘以10的某个
    ,以利用
    Math.round()
    这两种方法都有效,但有时小数点5会向下舍入而不是向上舍入。使用指数表示法表示的数字可以避免舍入问题

    试试这个

    function round(value, decimals) {
      return Number(Math.round(value+'e'+decimals)+'e-'+decimals);
    }
    
    round(8904000, 5)
    

    可以发送我的问题中给定值的确切示例替换
    为您要舍入的值。很好,此函数看起来与excel的操作完全相同,因此舍入(数字,2)和舍入(数字,-5)都有效