JavaScript;如何在三位数字后设置点?
JavaScript; How to set dot after three digits?
我有以下 JavaScript 代码:
var calculation = $('select[name=somevalue1] option:selected').data('calc')-($('select[name=somevalue1] option:selected').data('calc')/100*$('select[name=somevalue2] option:selected').data('calc'))-($('select[name=somevalue1] option:selected').data('calc')-($('select[name=somevalue1] option:selected').data('calc')/100*$('select[name=somevalue2] option:selected').data('calc')))/100*$('select[name=somevalue3] option:selected').data('calc');
$('#calculation').text((calculation).toFixed(2).replace(".",","))
那会计算一个数,把.
改成,
逗号后四舍五入到两位数。
我需要做的是在come之前的树数字后面加一个点。
表示:
1.234,56
而不是 1234,56
1.234.567,89
而不是 1234567,89
有人知道这样做的方法吗?
您应该使用带有正则表达式的附加 String#replace
(以匹配 ,
之前的三组数字)和替换函数(将 .
添加到每个匹配项之前).
您的更新代码:
var calculation = $('select[name=somevalue1] option:selected').data('calc') - ($('select[name=somevalue1] option:selected').data('calc') / 100 * $('select[name=somevalue2] option:selected').data('calc')) - ($('select[name=somevalue1] option:selected').data('calc') - ($('select[name=somevalue1] option:selected').data('calc') / 100 * $('select[name=somevalue2] option:selected').data('calc'))) / 100 * $('select[name=somevalue3] option:selected').data('calc')
function format(n) {
return n.toFixed(2).replace('.', ',').replace(/\d{3}(?=(\d{3})*,)/g, function(s) {
return '.' + s
})
}
$('#calculation').text(format(calculation))
演示实现:
var calculations = [
1234.56,
1234567.89,
1234,
.12
]
function format (n) {
return n.toFixed(2).replace('.', ',').replace(/\d{3}(?=(\d{3})*,)/g, function (s) {
return '.' + s
})
}
console.log(calculations.map(format))
这个功能适合你:
function formatNumber(num) {
var first = num.split(',');
var digits = first[0].split('').reverse();
var new_digits = [];
for(var i =0; i<digits.length; i++) {
if((i+1)%3==0) {
new_digits.push(digits[i]);
new_digits.push('.');
}
else {
new_digits.push(digits[i]);
}
}
var new_num = new_digits.reverse().join("")+','+first[1];
return new_num;
}
这段代码对我有用:
<p id="calculation"></p>
<script>
function numberWithCommas(x) {
var parts = x.toString().split(".");
parts[0]=parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,".");
return parts.join(",");
}
var calculation = 1231739216.34367;
document.getElementById("calculation").innerHTML = numberWithCommas((calculation).toFixed(2))
</script>
此代码将:
- 在 dezimal 后四舍五入到两位数。
- 将小数点改为逗号。
- 在小数点前每隔三位设置一个点。
ECMAScript 国际化 API 具有数字格式化功能。 Intl.NumberFormat()
你可以像这样使用纯 javascript:
var calculation = document.getElementById('money').value;
//1st way
var moneyFormatter = new Intl.NumberFormat();
document.getElementById('formattedMoney').innerText = moneyFormatter.format(calculation);
// 2nd way, using currency
var moneyFormatter2 = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
document.getElementById('formattedMoney2').innerText = moneyFormatter2.format(calculation);
<label>Calculation:</label> <input type="text" value="123456789.25" name="money" id="money" />
<ul>
<li>Number Format: <b><span id="formattedMoney"></span></b><br/><br/></li>
<li>Currency Format: <b><span id="formattedMoney2"></span><b/></li>
</ul>
IE11、Firefox 和 Chrome 支持它,但我不确定其他浏览器。
http://www.ecma-international.org/ecma-402/1.0/#sec-11.1.2
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat
在现代浏览器(Chrome 24+、Firefox 29+、IE11)上,您可以使用 Number.prototype.toLocaleString()
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
var number = 3500.12;
console.log(number.toLocaleString());
这使用浏览器的区域设置自动格式化数字。我的浏览器设置为德语,因此输出为
3.500,12
如果使用不同区域设置的人使用您的网站,他们将看到他们期望的数字。
我有以下 JavaScript 代码:
var calculation = $('select[name=somevalue1] option:selected').data('calc')-($('select[name=somevalue1] option:selected').data('calc')/100*$('select[name=somevalue2] option:selected').data('calc'))-($('select[name=somevalue1] option:selected').data('calc')-($('select[name=somevalue1] option:selected').data('calc')/100*$('select[name=somevalue2] option:selected').data('calc')))/100*$('select[name=somevalue3] option:selected').data('calc');
$('#calculation').text((calculation).toFixed(2).replace(".",","))
那会计算一个数,把.
改成,
逗号后四舍五入到两位数。
我需要做的是在come之前的树数字后面加一个点。
表示:
1.234,56
而不是 1234,56
1.234.567,89
而不是 1234567,89
有人知道这样做的方法吗?
您应该使用带有正则表达式的附加 String#replace
(以匹配 ,
之前的三组数字)和替换函数(将 .
添加到每个匹配项之前).
您的更新代码:
var calculation = $('select[name=somevalue1] option:selected').data('calc') - ($('select[name=somevalue1] option:selected').data('calc') / 100 * $('select[name=somevalue2] option:selected').data('calc')) - ($('select[name=somevalue1] option:selected').data('calc') - ($('select[name=somevalue1] option:selected').data('calc') / 100 * $('select[name=somevalue2] option:selected').data('calc'))) / 100 * $('select[name=somevalue3] option:selected').data('calc')
function format(n) {
return n.toFixed(2).replace('.', ',').replace(/\d{3}(?=(\d{3})*,)/g, function(s) {
return '.' + s
})
}
$('#calculation').text(format(calculation))
演示实现:
var calculations = [
1234.56,
1234567.89,
1234,
.12
]
function format (n) {
return n.toFixed(2).replace('.', ',').replace(/\d{3}(?=(\d{3})*,)/g, function (s) {
return '.' + s
})
}
console.log(calculations.map(format))
这个功能适合你:
function formatNumber(num) {
var first = num.split(',');
var digits = first[0].split('').reverse();
var new_digits = [];
for(var i =0; i<digits.length; i++) {
if((i+1)%3==0) {
new_digits.push(digits[i]);
new_digits.push('.');
}
else {
new_digits.push(digits[i]);
}
}
var new_num = new_digits.reverse().join("")+','+first[1];
return new_num;
}
这段代码对我有用:
<p id="calculation"></p>
<script>
function numberWithCommas(x) {
var parts = x.toString().split(".");
parts[0]=parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,".");
return parts.join(",");
}
var calculation = 1231739216.34367;
document.getElementById("calculation").innerHTML = numberWithCommas((calculation).toFixed(2))
</script>
此代码将:
- 在 dezimal 后四舍五入到两位数。
- 将小数点改为逗号。
- 在小数点前每隔三位设置一个点。
ECMAScript 国际化 API 具有数字格式化功能。 Intl.NumberFormat()
你可以像这样使用纯 javascript:
var calculation = document.getElementById('money').value;
//1st way
var moneyFormatter = new Intl.NumberFormat();
document.getElementById('formattedMoney').innerText = moneyFormatter.format(calculation);
// 2nd way, using currency
var moneyFormatter2 = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
document.getElementById('formattedMoney2').innerText = moneyFormatter2.format(calculation);
<label>Calculation:</label> <input type="text" value="123456789.25" name="money" id="money" />
<ul>
<li>Number Format: <b><span id="formattedMoney"></span></b><br/><br/></li>
<li>Currency Format: <b><span id="formattedMoney2"></span><b/></li>
</ul>
IE11、Firefox 和 Chrome 支持它,但我不确定其他浏览器。
http://www.ecma-international.org/ecma-402/1.0/#sec-11.1.2
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat
在现代浏览器(Chrome 24+、Firefox 29+、IE11)上,您可以使用 Number.prototype.toLocaleString()
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
var number = 3500.12;
console.log(number.toLocaleString());
这使用浏览器的区域设置自动格式化数字。我的浏览器设置为德语,因此输出为
3.500,12
如果使用不同区域设置的人使用您的网站,他们将看到他们期望的数字。