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

--希望大家提出不足之处,或有更好的方法。
时间: 2025-01-06 10:59:04

IE对toLocaleString小数位处理的相关文章

1.30 Java周末总结①控制显示多少位小数位②读txt和写txt模拟ATM数据库

1.30 Java周末总结①控制显示多少位小数位②读txt和写txt模拟ATM数据库 一.控制显示多少位小数位 有些时候小数位数太多了,想保留多少位小数,这里介绍一种利用四舍五入保留想要的小数位数Math.round四舍五入到整数位,所以把小数乘以整10或整百,在除以整10或整百,就得到想要的位数了 double a = 3.14159265359;double weishu = 5;double b = Math.pow(10,weishu);a = Math.round(a*b)/b; 二.

浅析toString()和toLocaleString()的区别

翻看<javascript高级程序设计>,对toString()和toLocaleString()两者的区别并没有直白的说明,简单查阅了一下 ecmascript官方文档 和 MDN 二者区别主要存在与Date类型中,举个例子来说: 1 var number = 1337; 2 var date = new Date(); 3 var myArr = [number, date, "foo"]; 4 5 var str = myArr.toLocaleString(); 6

toLocaleString

记得以前有人问我如何格式化货币,我用数组加字符串操作然后实现了,今年不小心看微博,发现了更加简单的方法!!! var num = 123456; var options = { style:'currency', currency:'CNY' }; num.toLocaleString('zh-CN',options); 然后console出来了¥123,456.00; 世间和平! toLocaleString : dateObj.toLocaleString([locales[, option

JS小数位保留两位小数

parseInt,parseFloat,parseDouble在JS中是将值转换成相应的类型: alert(parseFloat(12.44644).toFixed(2)); JS小数位保留两位小数,布布扣,bubuko.com

区分javascript中的toString(),toLocaleString(),valueOf()方法

首先我们随意创建一个对象,这很简单,打开FF浏览器的Firebug切换到控制台或者打开webkit浏览器的审查元素功能. 输入以下内容: var obj1=[1,2,3,4,5] var obj2=[5,4,3,2,1] var obj3=[obj1,obj2] 接着试试调用obj3的toString(),toLocaleString(),valueOf()方法: 根据输出结果可以发现toString()和toLocaleString()方法输出的内容是一样的,且都为字符串形式.而valueOf

sprintf() 处理 float类型的数字,保留小数位等。

关于 sprintf()的百科地址: http://baike.baidu.com/view/1295144.htm sprintf(szText, "%[填空字元][宽度][.精度]f", v); 填空字元: 0 的话表示空格填 0:空格是内定值,表示空格就放着. 1. 设置保留小数位长度, 注意: 会四舍五入 2. 设置输出宽度,不够部分用空格填充 3. 设置输出宽度和[填充字符],不够部分,用[填充字符:0]来填充  2014-08-04

toString()和toLocaleString()有什么区别

之前一直在用toString()的方法,今天做项目时要进行时间上的转换,第一次用了toLocaleString(),那么就来看看区别吧! var date=new Date() Wed Feb 15 2017 11:21:31 GMT+0800 (CST) date.toLocaleString() "2017/2/15 上午11:21:31" date.toString() "Wed Feb 15 2017 11:21:31 GMT+0800 (CST)" 效果一

poi 处理excel 小数问题 整数不保留小数位 整数多.0

读取的单元格为 hssfCell ,传入下面我提供的方法处理默认poi返回的为DOUBLE,所有先转为Long判断下,再进行返回: private String getValue(Cell hssfCell) { if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) { // 返回布尔类型的值 return String.valueOf(hssfCell.getBooleanCellValue()); } else if (hssfC

[SAP ABAP开发技术总结]数据输入输出转换、小数位/单位/货币格式化

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 15.             数据格式化.转换... 123 15.1.         数据输入输出转换... 123 15.1.1.     输出时自动转换... 123 15.1.2.     输入时自动转换... 124 15.1.3.     通过转换规则输入输出函数手动转换... 124 15.2.         数量小位数格式化... 125 15.2.