【问题标题】:Javascript always round up to X decimal places [duplicate]Javascript总是四舍五入到X个小数位[重复]
【发布时间】:2018-01-29 07:37:47
【问题描述】:

我需要编写一个总是四舍五入的函数,但会四舍五入到小数点后 0、1 或 2 位,具体取决于函数传递的是 0、1 还是 2。

例子...

四舍五入到小数点后 0 位: 13.4178 = 14

四舍五入到小数点后一位: 13.4178 = 13.5

四舍五入到小数点后两位: 13.4178 = 13.42

我找到了Math.ceil,但这只会向上取整为整数,而to fixed() 将向上或向下取整,而不仅仅是向上取整。有没有办法按照我上面描述的方式进行汇总?

【问题讨论】:

  • 您还可以详细查看 MDN 上的 Math.ceil 文档...
  • (num, signs) => Math.ceil(num * 10**signs)/10**signs;
  • 编写一些结合Math.ceil()toFixed() 的代码,如果这不能如您所愿,请将您的代码放在您的问题中。然后其他人可以帮助您,而不仅仅是为您编写代码。
  • 如果您尝试阅读文档,您可能会遇到 MDN 文档,其中可能有一两个功能可以帮助您完成任务 - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 我不认为这是作业。只需浏览该用户的其他贡献

标签: javascript


【解决方案1】:

您可以使用一个因子与十和所需十进制数的幂相乘,然后将其四舍五入并调整点。

function up(v, n) {
    return Math.ceil(v * Math.pow(10, n)) / Math.pow(10, n);
}

console.log(up(13.4178, 0));
console.log(up(13.4178, 1));
console.log(up(13.4178, 2));

【讨论】:

    【解决方案2】:

    只需乘以四舍五入并除以 10^dec 的因子。

    function roundUp( num, dec ) {
      // raise by dec, default to 0 decimals at the and.
      const d = Math.pow( 10, ( dec || 0 ) );
      // Multiply, round up and divide back so your decimals remain the same
      return Math.ceil( num * d ) / d;
    }
    
    console.log( roundUp( 1.2345 ) );
    console.log( roundUp( 1.2345, 1 ) );
    console.log( roundUp( 1.2345, 2 ) );
    console.log( roundUp( 1.2345, 3 ) );

    【讨论】:

      【解决方案3】:

      使用辅助乘法和除法:

      function MyCeil(number, digits) {
        var factor = Math.pow(10, digits);
        return Math.ceil(number*factor) / factor;
      }
      

      【讨论】:

        猜你喜欢
        • 2014-05-09
        • 2013-03-23
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 2015-11-24
        • 2012-03-11
        相关资源
        最近更新 更多