如何在JS中将数字四舍五入到最接近的平滑值

时间:2019-01-22 14:11:55

标签: javascript

从我的角度来看平滑数的定义:
10、50、100、200、300、400,... 1000、2000、3000 ... 10000等。

我有一些带有数字的动态数据(例如,单个数字数组)。

我不知道可以有多少个数字,我也不能四舍五入到最接近的平滑数字。

例如:

我不会将54舍入为50100。 (最好有3个选项:四舍五入,四舍五入和四舍五入到最接近)

尽管209282938之类的大数应四舍五入为200000000300000000

我该如何实现?

1 个答案:

答案 0 :(得分:3)

选项1

您可以使用.toPrecision()

It is explained in more detail here,但基本上您可以指定有效数字的数量,例如

function precise(x) {
  return Number.parseFloat(x).toPrecision(1);
}

console.log(precise(54));
// output: "50"

console.log(precise(2051075640));
// output: "2000000000 "

console.log(precise('99.999'));
// output: "100"

选项2

如果要始终向上舍入或向下舍入,可以使用.ceil()和/或.floor()

注意:这些舍入到最接近的整数,但是您可以处理输入以利用它们:

  1. 计算输入的位数
  2. 将其除以10的适当倍数
  3. 使用.ceil().floor()
  4. 与以前一样乘以10的倍数