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

--希望大家提出不足之处,或有更好的方法。

 

posted on 2014-11-18 19:32  web369  阅读(2192)  评论(0编辑  收藏  举报

导航