如何在JS中将数字舍入到最接近的平滑值[关闭]

问题描述 投票:-6回答:1

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

我有一些动态即将到来的数据(例如,单个数字数组)。

我不知道,这个数字有多大,我不想把它四舍五入到最近的平滑数。

例如:

我不想把54绕到50100。 (很高兴有3个选项:向上舍入,向下舍入,舍入到最近)

虽然像209282938这样的大数字应该四舍五入到200000000300000000

我怎样才能做到这一点?

javascript
1个回答
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的倍数
© www.soinside.com 2019 - 2024. All rights reserved.