【问题标题】:Truncate decimal number (as strings) to a fixed number of places将十进制数(作为字符串)截断为固定位数
【发布时间】:2013-01-02 11:15:13
【问题描述】:

我想将数字(以字符串形式给出)截断为固定的小数位数。数字可以是负数(带减号)、正数(无符号)。我宁愿正确地对数字进行四舍五入并保持尾随零。我想要相同的小数位数,不管整数有多长。这些数字将作为字符串存储回来。

例如:

140.234234234 -> 140.234
1.123123 -> 1.123
-12.789789 -> -12.790

【问题讨论】:

    标签: javascript string-formatting number-formatting


    【解决方案1】:

    首先将它们解析为浮点数,然后格式化为toFixed:

    var nums = [
        "140.234234234", // -> 140.234
        "1.123123", // -> 1.123
        "-12.789789" // -> -12.790
    ];
    
    nums.forEach(function(n) {
        console.log(parseFloat(n).toFixed(3));
    });
    

    http://codepen.io/anon/pen/IvxmA

    【讨论】:

      【解决方案2】:

      使用.toFixed可以将任何数字显示为固定小数位字符串:

      var num = 140.234234234;
      var fixedDecimalPlace = num.toFixed(3); // is "140.234"
      

      【讨论】:

        【解决方案3】:
        function truncate( numberString, trunk ) {
            var onpoint = numberString.split('.',2);
            var numberStringTruncated = numberString;
            if (onpoint.length > 1) {
                numberStringTruncated = onpoint[0] + '.' + onpoint[1].substring(0,trunk);
            }
            return numberStringTruncated;
        }
        

        这不考虑舍入或填充。正如其他答案所建议的那样,您应该使用 parseFloat 后跟 toFixed

        【讨论】:

          猜你喜欢
          • 2017-09-07
          • 1970-01-01
          • 2015-11-03
          • 1970-01-01
          • 2012-06-13
          • 1970-01-01
          • 1970-01-01
          • 2011-05-23
          • 1970-01-01
          相关资源
          最近更新 更多