如何像在 Excel 舍入函数中那样以负精度在 js 中舍入数字



我正在尝试将值从 8904000 四舍五入到 8900000 有什么可能的方法可以使用 Math.round 更改它。 MS Excel 中的示例

=round(8904000,-5);
ANS: 8900000      

我尝试了下面的代码,但 Math.round 没有第二个参数

Math.round(8904000,-5);
ANS: 8904000

简而言之,我想将数字四舍五入到最接近的 100,000 个数字

这样 5300*56*30= 8904000 变成 8900000

试试这个,

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

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

  1. 使用Number.prototype.toFixed()
  2. float乘以一些power of 10以利用Math.round()

这两种方法都有效,除了有时小数点 5 向下舍入而不是向上舍入。通过使用以指数表示法表示的数字可以避免舍入问题

试试这个

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

value除以四舍五入的unit,因此1000000Math.round()指定unit的数字和multiply

最新更新