zoukankan      html  css  js  c++  java
  • JS数字每三位加逗号的最简单方法

    <script>
    
    function thousands(num){
            var str = num.toString();
            var reg = str.indexOf(".") > -1 ? /(d)(?=(d{3})+.)/g : /(d)(?=(?:d{3})+$)/g;
            return str.replace(reg,"$1,");
    }
    
    alert(thousands(1234567.1234567));
    alert(thousands(7654321));
    
    </script>



    方法一【原生】:

    JavaScript
    <script>
    
    function thousands(num){
        return num.toLocaleString();
    }
    
    alert(thousands(1234567.1234567));
    alert(thousands(7654321));
    
    </script>

    这个方法最为简单,使用JS原生实现。toLocaleString在将数字转换为字符串的同时,会使用三位分节法进行显示。如果是浮点数,只保留小数点后三位数,并进行了四舍五入。如果对结果要求不高,这个算是最简单的实现。

    方法二【正则表达式】:

    JavaScript
    <script>
    
    function thousands(num){
            var str = num.toString();
            var reg = str.indexOf(".") > -1 ? /(d)(?=(d{3})+.)/g : /(d)(?=(?:d{3})+$)/g;
            return str.replace(reg,"$1,");
    }
    
    alert(thousands(1234567.1234567));
    alert(thousands(7654321));
    
    </script>
    运行一下试试

    利用正则表达式,也是代码量较少的一种方法。如果仅考虑整数,或指定位数的小数,可以更加简洁:

    保留两位小数

    JavaScript
    num.toFixed(2).toString().replace(/(d)(?=(d{3})+.)/g,"$1,");

    保留整数

    JavaScript
    num.toFixed(0).toString().replace(/(d)(?=(?:d{3})+$)/g,"$1,");

    方法三【字符串打散】:

    JavaScript
    <script>
    
    function thousands(num){
    	var splits=[],res=[];
    	var splits = num.toString().split(".");
    	splits[0].split("").reverse().map(function(item,i){
    		if(i%3 == 0 && i!=0){ res.push(","); }
    		res.push(item);
    	});
    	return res.reverse().join("")+(splits.length>1 ? "."+splits[1] : "");
    }
    
    alert(thousands(1234567.1234567));
    alert(thousands(7654321));
    
    </script>

    把数字分成整数和小数两部分,然后把整数部分差成单字符数组,反向排列后每3位插入一个逗号(因为逗号是从后向前加)。然后再一次反向排列并合成字符串,加上小数部分就完成了。

    如果有保留小数位数的要求,以上方法都可以对参数 num 使用 toFixed(n) 方法,toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。参数 n 规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。

    例如,保留两位小数:

    JavaScript
    <script>
    
    function thousands(num){
    	num = num.toFixed(2);//保留两位小数
            var str = num.toString();
            var reg = str.indexOf(".") > -1 ? /(d)(?=(d{3})+.)/g : /(d)(?=(?:d{3})+$)/g;
            return str.replace(reg,"$1,");
    }
    
    alert(thousands(1234567.1234567));
    
    </script>



  • 相关阅读:
    [BJOI2019] 光线
    C# 从零开始写 SharpDx 应用 笔刷
    BAT 脚本判断当前系统是 x86 还是 x64 系统
    BAT 脚本判断当前系统是 x86 还是 x64 系统
    win2d 通过 CanvasActiveLayer 画出透明度和裁剪
    win2d 通过 CanvasActiveLayer 画出透明度和裁剪
    PowerShell 拿到显卡信息
    PowerShell 拿到显卡信息
    win10 uwp 如何使用DataTemplate
    win10 uwp 如何使用DataTemplate
  • 原文地址:https://www.cnblogs.com/wuxu-dl/p/12581204.html
Copyright © 2011-2022 走看看