【问题标题】:Round to nearest decimal number with small amount of decimal places四舍五入到小数点后最接近的小数
【发布时间】:2017-10-22 23:00:53
【问题描述】:

我有十进制数,我需要将其四舍五入以尽可能少地保留小数位数。

例如:

0.0812321321 -> 0.1

0.001232123 -> 0.001

0.00001535865586 -> 0.00002

我正在考虑找到最接近的 10 的更高倍数,因此示例将具有以下结果:0.1; 0.01; 0.0001。对于我的项目,它已经足够接近,但我无法创建一个可以做到这一点的函数。

【问题讨论】:

标签: javascript decimal rounding


【解决方案1】:
function nearestDecimal(number) {
    if (!number) {
        return "0";
    }
    const decimals = -Math.log10(number);
    const integerPart = Math.floor(decimals);
    const fractionalPart = decimals - integerPart;
    return number.toFixed(Math.max(0,
        fractionalPart >= -Math.log10(.5) ? Math.ceil(decimals) : integerPart
    ));
}

【讨论】:

  • @Myoxidae 您是否发现此解决方案有任何问题?
猜你喜欢
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
相关资源
最近更新 更多