-
2021-11-11 17:43:43
在项目开发中需要js实现千位分隔符来分割一个整数,比如我想将数字 1234567 显示为“1,234,567”。我该怎么实现呢?
方法一、利用循环
实现思路是将数字转换为字符数组,再循环整个数组, 每三位添加一个分隔逗号,最后再合并成字符串。
function numberWithCommas(x) { x = x.toString(); var pattern = /(-?\d+)(\d{3})/; while (pattern.test(x)) x = x.replace(pattern, "$1,$2"); return x; } numberWithCommas(12312124545);//'12,312,124,545' numberWithCommas(123121245.45);//'123,121,245.45'
方法二、toLocaleString
Number.prototype.toLocaleString。它是在 JavaScript 1.5(于 1999 年推出)中实现的,因此基本上所有主要浏览器都支持它。
var num = 12345.1234 num.toLocaleString();//'12,345.123'
注意的是这个函数在没有指定区域的基本使用时,返回使用默认的语言环境和默认选项格式化的字符串,所以不同地区数字格式可能会有一定的差异。最好确保使用 locales 参数指定了使用的语言。
注:我测试的环境下小数部分会根据四舍五入只留下三位。比如:var b=1234.4542; b.toLocaleString();//'1,234.454'
方法三、正则表达式和replace函数
使用正则表达式和replace函数,相对前两种我更喜欢这种方法,虽然正则有点难以理解。
function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); }
正则表达式使用 2 个前瞻断言:
- 一个正数,用于在字符串中查找其后连续 3 位数字的任何点,
- 一个否定断言,以确保该点只有 3 位数字的倍数。替换表达式在那里放置一个逗号。
注意:这个函数如果小数点后有超过3位数字的话,会在不需要的地方添加逗号。如果这是一个问题,您可以使用此功能
function numberWithCommas(x) { var parts = x.toString().split("."); parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); return parts.join("."); }
更简洁,最终代码:
function numberWithCommas(x) { return x.toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ","); }
方法四:Intl.NumberFormat
原生js功能。支持 IE11、Edge、最新的 Safari、Chrome、Firefox、Opera、iOS 上的 Safari 和 Android 上的 Chrome。
可以把普通的数字,转换成不同的货币和格式样式字符串。
let number = 1234567890; let nf = new Intl.NumberFormat('en-US'); nf.format(number); // "1,234,567,890"
更多实例:
var number = 123456.789; console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number)); // expected output: "123.456,79 €" // the Japanese yen doesn't use a minor unit console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(number)); // expected output: "¥123,457" // limit to three significant digits console.log(new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 }).format(number)); // expected output: "1,23,000"
更多相关内容 -
Javascript 正则表达式实现为数字添加千位分隔符
2021-01-21 12:44:18最近在网上有看到使用js来实现数字的千位分隔符的面试(笔试)题,所以就自己写了一个利用“正则+replace”来实现的方法: 代码如下: var thousandBitSeparator = function(numStr){ var b = /([-+]?\d{3})(?... -
num2sepstr:num2str 千位分隔符-matlab开发
2021-05-29 22:31:33对输入数字调用 num2str(使用可选的指定格式)并添加逗号作为千位分隔符。 -
JS自动格式化输入的数字/千位分隔符.rar
2019-07-05 00:25:01介绍: 这个货币转换JS代码,可以实现自动格式化输入的数字,自动千位分隔符。 -
ThousandSep:将数字转换为带有千位分隔符的字符串-matlab开发
2021-05-30 06:38:31千月 - 数字作为字符串,每 3 位有一个分隔符S =千Sep(N,FSpec,Sep) 输入: N:数字,SPRINTF 接受的所有类,标量或数组。 FSpec:SPRINTF 的格式说明符。 可选,默认值:'%.16g' Sep:字符作为分隔符。 可选,... -
到数字分组:使用千位分隔符(或自定义文本)将字符串中的数字分组
2021-03-04 04:59:20使用千位分隔符(或自定义文本)将字符串中的数字分组。 import toDigitGrouped from 'to-digit-grouped' ; toDigitGrouped ( '1234567890.1234567890' ) ; // "1 234 567 890.1234567890" toDigitGrouped ( '... -
js代码-JS给数字加千位分隔符
2021-07-14 21:11:30js代码-JS给数字加千位分隔符 -
千位分隔符
2021-05-03 11:13:10所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。 编程要求 在输入的数字中插入千分位分隔符并将其输出。 效果如下: 输入:1234567 输出:1,234,567 可以用字符串写,也可以...任务描述
本关需要你完成在数字中插入千分位分隔符的小程序。相关知识
什么是千分位分隔符呢?千位分隔符,其实就是数字中的逗号。依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值。所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。编程要求
在输入的数字中插入千分位分隔符并将其输出。效果如下:
输入:1234567
输出:1,234,567可以用字符串写,也可以直接常规写
第一种是常规写法:#include <stdio.h> int main() { //获取参数方式 scanf //int x =0; //int y = 0; //scanf("%d", &x); //结果输出使用prinf //printf("%d",x); // 请在此添加你的代码 /********** Begin *********/ long i=1,n,p,q,t,m; scanf("%ld",&n); t = n;//copy一个副本 while ((n / 10) != 0){ n = n / 10; i++; }//到这 n不存在了 i = i - 1; p = 1; for (q = 1; q <= i; q++){ p = p * 10; } while (i >= 0){ m = t / p; t = t - m*p; printf("%d", m); p = p / 10; if (i % 3 == 0 && i != 0){ printf(","); } i = i - 1; } return 0; /********** End **********/ }
下面是字符串写法:
#include <stdio.h> int main() { //获取参数方式 scanf //int x =0; //int y = 0; //scanf("%d", &x); //结果输出使用prinf //printf("%d",x); // 请在此添加你的代码 /********** Begin *********/ char str[20]; int len,i; gets(str); len=strlen(str)%3; for(i=0;str[i]!='\0';i++) { printf("%c",str[i]); if((i+1)%3==len && str[i+1]!='\0') printf("%c",44); } return 0; /********** End **********/ }
-
android 千位分隔符 价格分隔符
2021-03-26 14:01:45千位分隔符,其实就是数字中的逗号。依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值。所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。 例如 1,...千位分隔符,其实就是数字中的逗号。依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值。所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。
例如
1,000 一千
1,000,000 一百万
1,000,000,000 十亿方式一(Java自带函数)
缺点:
当数字很大时,转换会出错。
比如,1234567890123456789 会变成1,234,567,890,123,456,770
这样的数据显然不是我们想要的。public static String FormatNumber(String num){ DecimalFormat df = new DecimalFormat("##,###,###"); return df.format(Double.parseDouble(num)); }
方式二(循环)
public static String FormatNumber(String num) { StringBuffer tmp = new StringBuffer(); for (int i = num.length() - 1; i>=0;i--){ tmp.append(num.charAt(i)); if ((num.length() - i) % 3 == 0) tmp.append(","); } return tmp.reverse().toString(); }
方式三(正则表达式)
public static String FormatNumber(String num) { StringBuffer tmp = new StringBuffer().append(num).reverse(); String retNum = Pattern.compile("(\\d{3})(?=\\d)").matcher(tmp.toString()).replaceAll("$1,"); return new StringBuffer().append(retNum).reverse().toString(); }
推荐使用第三种!!!
-
如何设置自定义千位分隔符?
2021-07-16 14:40:06I know that theoretically digits in large integers can be grouped by thousands for better readability:Python 3.5.2 (default, Nov 17 2016, 17:05:23)[GCC 5.4.0 20160609] on linuxType "help", "copyright...I know that theoretically digits in large integers can be grouped by thousands for better readability:
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> locale.format('%d', 1234567890, grouping=True)
'1,234,567,890'
>>> "{:n}".format(1234567890)
'1,234,567,890'
However, surprisingly, this won’t work for every locale:
>>> locale.setlocale(locale.LC_ALL, 'pl_PL.UTF-8')
'pl_PL.UTF-8'
>>> locale.format('%d', 1234567890, grouping=True)
'1234567890'
>>> "{:n}".format(1234567890)
'1234567890'
Why are numbers not formatted? I find this strange. I would expect something like 1 234 567 890 being printed.
Per Format Specification Mini-Language, we can explicitly enforce two possible separators: a comma , and an underscore _. Sadly, a comma is inappropriate for Polish since it is used as a decimal point separator there, and a number like 1_234_567_890 would look oddly for most people.
Can we somehow enforce a non-breaking space being used as a thousands separator?
解决方案
The pl_PL locale thousands separator seems to be empty. I don't know if this accurately represents common usage in Poland, but Python is correctly formatting your number according to the rules of the pl_PL locale. This may be a bug in the locale files.
As far as I am aware, there is no option to manually specify the thousands separator and decimal mark characters.
-
千位分隔符的完整攻略
2020-12-11 06:04:16千位分隔符纯整数情况纯整数大概是所有情况里最简单的一种,我们只要正确匹配出千分位就好了。观察上面的数字,我们可以得出千分位的特征是到字符串终止位有 3n 个数字,不包括起始位。于是可以得到这样的函数:... -
使用您选择的千位分隔符格式化数字:通过添加千位分隔符将数字转换为更易读的格式的函数。-matlab开发
2021-06-01 14:37:17通过添加千位分隔符将数字转换为更易读的格式的函数。 这个非常简单的函数允许您选择要返回的千位分隔符和小数位数。 任何字符(包括空格)都可以作为分隔符。 例如 千分之一(1234.567,',',1) 返回字符串'1,... -
正则千位分隔符
2021-07-26 10:03:44很多项目都涉及金额的都会有要求千位加,之类的分隔,就来学一个正则的替换吧。 正则知识点 表达式 可匹配 \w 任意一个字母或数字或下线线,也就是AZ,az0~9,_中任意一个 \d 任意一个数字,0~9中的任意一个 ... -
如何在Java中设置千位分隔符?
2021-02-27 15:46:48问题如何在Java中设置千位分隔符?我有BigDecimal的String表示,我想设置千位分隔符并返回String。#1 热门回答(180 赞)你可以使用格式功能",";int no = 124750;String str = String.format("%,d", no);//str = 124,... -
python – 如何设置自定义千位分隔符?
2020-12-11 06:02:55解决方法: pl_PL语言环境千位分隔符似乎是empty.我不知道这是否准确地表示波兰的常见用法,但Python正确地根据pl_PL语言环境的规则格式化您的数字.这可能是区域设置文件中的错误. 据我所知,没有选项可以手动指定千位... -
4种JavaScript实现千位分隔符的方法
2021-11-01 00:06:43来源 |http://www.fly63.com/在项目开发中需要js实现千位分隔符来分割一个整数,比如我想将数字 1234567 显示为“1,234,567”。我该怎么实现呢?方法一、... -
数据处理—数字增加千位分隔符
2022-03-30 16:08:59// 千位分隔符 处理金钱格式 function add_comma_toThousands(num) { var num = (num || 0).toString(); var num1 = num.indexOf("."); var num3 = num.indexOf("-"); if (num1 == '-1') { if (num3 != '-1') {... -
第三篇《实现千位分隔符》
2021-11-22 14:47:27将普通的数字转换为带千位分隔符格式的数字字符串是一个非常常见的问题,千位分隔符格式的规则是数字的整数部分每三位一组,以“,”分节。小数部分不分节 。 示例:19,351,235.235767 这里有几个常见的实现方法。 1... -
JavaScript实现千位分隔符
2021-05-22 11:07:18将普通的数字转换为带千位分隔符格式的数字字符串是一个非常常见的问题,千位分隔符格式的规则是数字的整数部分每三位一组,以“,”分节。小数部分不分节 。示例:19,351,235.235767这里有几个常见的实现方法。1.... -
原生js之千位分隔符(包括小数情况)
2021-05-22 11:07:50同学前端面试遇到这么一个题目 :给数字添加千分位分隔符一拿到他给的面试题,感觉挺容易的,不过等自己写后发现非常考虑逻辑,以及思维能力(我是小白)上网百度了一波全是用正则表达式来解决的,正则这块我只懂皮毛... -
mySQL格式数字输出,千位分隔符
2021-07-16 16:31:30I have a mySQL query which is outputting decimal fields with a comma.SELECT Metals.Metal, FORMAT(Fixes.GBPam, 3) AS AM, FORMAT(Fixes.GBPpm, 3) AS PM,DATE_FORMAT(Fixes.DateTime, '%d-%m-%y') AS DateFROM... -
JAVA-千位分隔符插入方法
2021-11-23 23:43:16* 千位分割符插入方法 */ public static String formatNumber(double d) { StringBuffer str = new StringBuffer(); str.append(d); //插入','的下标位置 int index = str.indexOf(".")... -
输入框千位分隔符
2021-10-26 15:22:54<template> <Input v-model="value" @on-change="handleChange" placeholder="Enter something..." style="width: 300px" /> </template> <script> export default { ... . -
Python格式字符串带空格的千位分隔符
2020-11-24 12:31:38则可以使用常规的字符串替换功能(如果您想将逗号和点换成点和逗号): print("{:,.2f}".format(7123001.345).replace(",", " ") 用逗号代替空格很简单(点被假定为小数点分隔符): print("{:,.2f}".format(7123001... -
JS数字添加千位分隔符
2021-12-16 21:43:55⏹JS数字添加千位分隔符 -
字符串中插入千位分隔符
2021-09-09 18:56:18在字符串中插入千位分割符,它的结果和对人民币进行分隔符分割的结果是一样的,思路也一致。 function thousandSign(number) { let str = String(number) let remainder = str.length % 3 // 计算字符串除3的余数 -
java数据添加千位分隔符
2021-03-31 15:48:09先把int,double,bigdecimal等类型的数据转成字符串,再作为参数传入方法添加千位分隔符。 public class test { public static String solve(String num) { if (num == null) { return null; } // 判断是否...