javascript - 舍入到最接近的十的幂

标签 javascript

我有一个数字,我需要将它四舍五入到最接近的十的幂。看起来这应该可以在没有一大堆 if 语句或使用递归或循环的情况下实现,但我不知道最优雅的方法。如果不清楚我的意思,这里有一些例子:

f(1) === 1
f(5) === 1
f(15) === 10
f(43) === 10
f(456) === 100
f(999) === 100

澄清一下:我不需要最接近的 10 的倍数(不是:10、20、30...),而是最接近的 10 的幂(10、100、1000...)。

编辑:据我所知,这不是一个重复的问题。请停止重复询问四舍五入到十的最接近的倍数的问题。这个问题与链接的问题无关,因为它询问四舍五入到最接近的十的。如果您想将此问题作为重复问题关闭,请查找并链接重复问题。当前链接的问题在我发布问题后大约 30 秒被评论,有人没有阅读整个问题,只是评论提示它是重复的。那个人已经删除了他的评论(在意识到他错了之后),尽管你可以看到我和其他人的评论都指出这不是重复的。

最佳答案

您可以取 10 的对数并取 10 的幂的整数值。

function f(v) {
    return Math.pow(10, Math.floor(Math.log10(v)));
}

console.log(f(1));   //   1
console.log(f(5));   //   1
console.log(f(15));  //  10
console.log(f(43));  //  10
console.log(f(456)); // 100
console.log(f(999)); // 100

关于javascript - 舍入到最接近的十的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46633310/

相关文章:

javascript - 链接第一次点击后,使链接不可点击,等待过渡结束+1s,然后再次使链接可点击

javascript - jQuery 查找图像的高度,即使它没有在 HTML 中设置

javascript - 如何使用动态 id 验证 html 元素

php - 如何将 PHP 日期格式转换为 Javascript

javascript - 如何检查变量是否是 JavaScript 中的数组?

javascript - 通过 AngularJS 使用 WebSpeech API

javascript - 使用 JavaScript 向表中添加 500,000 行而不会使页面崩溃

javascript - phpcurl远程页面javascript提取

javascript - 按数字顺序对数字数组进行合并和排序 - javascript

javascript - 使用 Ajax 显示数据库中的数据