我有以下的代码需要用印度货币数字系统显示。
var x=125465778;
var res= x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
我得到这个输出:125,465,778
。
我需要这样的输出:12,54,65,778
。
请帮我解决这个问题。
我有以下的代码需要用印度货币数字系统显示。
var x=125465778;
var res= x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
我得到这个输出:125,465,778
。
我需要这样的输出:12,54,65,778
。
请帮我解决这个问题。
我来晚了,但我想这会有所帮助 :)
你可以使用Number.prototype.toLocaleString()。
语法
numObj.toLocaleString([locales [, options]])
var number = 123456.789;
// India uses thousands/lakh/crore separators
document.getElementById('result').innerHTML = number.toLocaleString('en-IN');
// → 1,23,456.789
document.getElementById('result1').innerHTML = number.toLocaleString('en-IN', {
maximumFractionDigits: 2,
style: 'currency',
currency: 'INR'
});
// → ₹1,23,456.79
<div id="result"></div>
<div id="result1"></div>
对于整数:
var x=12345678;
x=x.toString();
var lastThree = x.substring(x.length-3);
var otherNumbers = x.substring(0,x.length-3);
if(otherNumbers != '')
lastThree = ',' + lastThree;
var res = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;
alert(res);
关于浮动:
var x=12345652457.557;
x=x.toString();
var afterPoint = '';
if(x.indexOf('.') > 0)
afterPoint = x.substring(x.indexOf('.'),x.length);
x = Math.floor(x);
x=x.toString();
var lastThree = x.substring(x.length-3);
var otherNumbers = x.substring(0,x.length-3);
if(otherNumbers != '')
lastThree = ',' + lastThree;
var res = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree + afterPoint;
alert(res);
-123
时,你的答案会返回-,123
。 - mrid简单易行的方法:
1. 使用 LocalString() 直接转换
(1000.03).toLocaleString()
(1000.03).toLocaleString('en-IN') # number followed by method
2. 使用Intl - 国际化API
Intl对象是ECMAScript国际化API的命名空间,提供了语言敏感的字符串比较、数字格式化和日期时间格式化。
例如:Intl.NumberFormat('en-IN').format(1000)
3. 使用自定义函数:
function numberWithCommas(x) {
return x.toString().split('.')[0].length > 3 ? x.toString().substring(0,x.toString().split('.')[0].length-3).replace(/\B(?=(\d{2})+(?!\d))/g, ",") + "," + x.toString().substring(x.toString().split('.')[0].length-3): x.toString();
}
console.log("0 in indian format", numberWithCommas(0));
console.log("10 in indian format", numberWithCommas(10));
console.log("1000.15 in indian format", numberWithCommas(1000.15));
console.log("15123.32 in indian format", numberWithCommas(15123.32));
如果您的输入是 10000.5,
numberWithCommas(10000.5)
你将会获得这样的输出:10,000.5
仅适用于整数,无需进行其他操作。
这将匹配从末尾开始的每个数字,其中有1个或多个双位数字模式,并用自身+“,”替换:
"125465778".replace(/(\d)(?=(\d\d)+$)/g, "$1,");
-> "1,25,46,57,78"
但是因为我们想要最终得到3,所以让我们通过在匹配输入结尾之前添加额外的“\d”来明确说明:
"125465778".replace(/(\d)(?=(\d\d)+\d$)/g, "$1,");
-> "12,54,65,778"
给定下面的函数一个数字,它会以印度数字格式进行分组并返回格式化后的数字。
例如:输入:12345678567545.122343
输出:1,23,45,67,85,67,545.122343
function formatNumber(num) {
input = num;
var n1, n2;
num = num + '' || '';
// works for integer and floating as well
n1 = num.split('.');
n2 = n1[1] || null;
n1 = n1[0].replace(/(\d)(?=(\d\d)+\d$)/g, "$1,");
num = n2 ? n1 + '.' + n2 : n1;
console.log("Input:",input)
console.log("Output:",num)
return num;
}
formatNumber(prompt("Enter Number",1234567))
我来晚了。 但这里有一个隐式的方法可以做到。
var number = 3493423.34;
console.log(new Intl.NumberFormat('en-IN', { style: "currency", currency: "INR" }).format(number));
console.log(new Intl.NumberFormat('en-IN').format(number));
$(this).replace(/\B(?=(?:\d{3})+(?!\d))/g, ',');
$(this).replace(/\B(?=(?:(\d\d)+(\d)(?!\d))+(?!\d))/g, ',');
<script src="format.20110630-1100.min.js" type="text/javascript"></script>
<script>
var FullData = format( "#,##0.####", 125465778)
var n=FullData.split(",");
var part1 ="";
for(i=0;i<n.length-1;i++)
part1 +=n[i];
var part2 = n[n.length-1]
alert(format( "#0,#0.####", part1) + "," + part2);
</script>
输入:
1) 125465778
2) 1234567.89
输出:
1) 12,54,65,778
2) 12,34,567.89
只需使用https://osrec.github.io/currencyFormatter.js/
然后你所需要的就是:
OSREC.CurrencyFormatter.format(2534234, { currency: 'INR' });
// Returns ₹ 25,34,234.00