Javascript 函数将数字四舍五入到最近的;“平滑”;数

Javascript 函数将数字四舍五入到最近的;“平滑”;数,javascript,Javascript,从我的观点来看,平滑数的定义: 10, 50, 100, 200, 300, 400, ... 1000, 2000, 3000 ... 一万等 我有一些数字(例如,单个数字数组)的动态数据 我不知道这个数字有多大,我想把它四舍五入到最接近的“平滑”数字 例如: 我不想把54四舍五入到50或100。(最好有3个选项:向上取整、向下取整和四舍五入到最近值,例如54到50、94到100) 而像209282938这样的大数字应该四舍五入到200000000或300000000 功能应该是什么样子?选项

从我的观点来看,平滑数的定义:
10, 50, 100, 200, 300, 400, ... 1000, 2000, 3000 ... 一万等

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

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

例如:

我不想把
54
四舍五入到
50
100
。(最好有3个选项:向上取整、向下取整和四舍五入到最近值,例如54到50、94到100)

而像
209282938
这样的大数字应该四舍五入到
200000000
300000000


功能应该是什么样子?

选项1

您可以使用
.toPrecision()

但基本上你可以指定有效数字的数量,例如

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()

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

  • 计算出输入有多少位数
  • 将其除以10的适当倍数
  • 使用
    .ceil()
    .floor()
  • 乘以与之前相同的10的倍数

  • 你需要更好地解释你的逻辑。为什么不是54比60呢?@Klimenkomud这很重要,否则我们无法理解你到底想做什么。请注意,在这种情况下,“美化”并不意味着什么,这是我们感到困惑的部分原因。例如,为什么将
    54
    四舍五入到
    100
    (或
    60
    不重要),但
    2051075640
    四舍五入到
    3000000000
    而不是
    2051075650
    。好吧,但你还是要下决心,无论您现在想要60还是100作为输入值54…完美!我认为玩一点这个游戏会得到最理想的结果,多谢了。这个问题规定54应该是100。这个数字是50。它完美吗?它似乎不符合规定的要求。@Amy我认为这是无意的,这个问题后来被修改了。@Amy我更新了一下我的问题,让它更清楚。我们的想法不是要找到某种具体的解决方案,而是,正如问题标题所说,美化数字。每个人都能理解不同的事物,但一般来说,正如我所想,它可以理解为“最近的平坦/平滑数”。我希望你明白我的想法。