zoukankan      html  css  js  c++  java
  • IE对toLocaleString小数位处理

    在js中对数值的格式化经常会用到四舍五入、保留小数位数、百分制格式化,分别会用到以下方法

    <script type="text/javascript">
        var n = 1234500.6789;
        console.log(Math.round(n));//四舍五入
        console.log(n.toFixed(2));//转成字符,并保留2位小数位数,同时对尾数四舍五入
        console.log(n.toLocaleString());//转成字符,并根据本地规则格式化

      //分别输出结果:
      //1234501
      //1234500.68
      //1,234,500.679
    </script>

    但是在IE浏览器下toLocaleString()的结果与其它浏览器去不一样;

    <script type="text/javascript">
    
        var n = 123456789;
    
        document.write(n.toLocaleString());
        //    IE:123,456,789.00 
        //Chrome:123, 456, 789.00 
    </script>

    在IE下,整数格式化出现了两小数,并不是我想要的结果。为了统一toLocaleString()方法,并增强其它,单独写了一个方法

    <script type="text/javascript">
      //n格式化的数字
        //m保留的小数位数,可不传
        function toLocaleString(n, m) {
            if (m == null || m == "") {
                m = 0;
            } 
            var str = n.toLocaleString();
            if (m > 0) {
                str = str.substring(0, str.lastIndexOf(".") + 1 + m);
            } else {
                str = str.substring(0, str.lastIndexOf(".") + m);
            }
            return str; 
        }
        //测试 验证
        var n = 1234567.366;
        document.write(toLocaleString(n));document.write("<br>");
        document.write(toLocaleString(n, 0)); document.write("<br>");
        document.write(toLocaleString(n, 1)); document.write("<br>");
        document.write(toLocaleString(n, 2)); document.write("<br>");
    </script>

    输出结果在IE和Chrome下都是:

    1,234,567
    1,234,567
    1,234,567.3
    1,234,567.37

    --希望大家提出不足之处,或有更好的方法。
  • 相关阅读:
    高阶函数
    如何理解data URL?
    JS对象的创建方式
    数组中的map方法
    奇怪的 Javascript
    什么场景不适合箭头函数
    协方差矩阵学习[转载]
    PAT 1140 Look-and-say Sequence [比较]
    PAT 1089 Insert or Merge[难]
    PAT 1096 Consecutive Factors[难]
  • 原文地址:https://www.cnblogs.com/web369/p/4106569.html
Copyright © 2011-2022 走看看