首页 > 代码库 > IE对toLocaleString小数位处理

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

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

 

IE对toLocaleString小数位处理