我有一个JavaScript编号,例如1234.5678
。我试图显示最多四位小数的数据。另外,我想添加相应的逗号。换句话说,我想将之前的数字显示为1,234.5678
。目前,我有以下内容:
var output = Number(1234.5678).toFixed(4);
output = output.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
不幸的是,这种方法将我的输入值呈现为1,234.5,678
。小数点右边的逗号是不受欢迎的。但是,我不确定解决此问题的正确方法是什么。似乎应该有一种简单的方法来使用纯JavaScript 格式化数字。请注意,我正在尝试学习JavaScript的细节。出于这个原因,我不是在追求一个库来解决这个问题。相反,我正在尝试更多地了解语言本身。
谢谢!
答案 0 :(得分:4)
尝试使用toLocaleString方法
(1234.5678).toLocaleString()
"1,234.568"
答案 1 :(得分:0)
尝试使用此方法
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
它允许格式化字符串的本地设置
答案 2 :(得分:0)
您可以扩展Number
并创建一个可以定义的函数:
Number.prototype.toCustomFormat = function (decimals, decimal_sep, thousands_sep) {
var default_decimals = 4,
default_decimal_sep = '.',
default_thousands_sep = ',';
var n = this,
sign = (n < 0) ? '-' : '',
// if decimal is zero we must take it,
// it means user does not want to show any decimal
c = isNaN(decimals) ? default_decimals : Math.abs(decimals),
// if no decimal separetor is passed
// we use the comma as default decimal separator
d = decimal_sep || default_decimal_sep,
// if you don't want ot use a thousands separator
// you can pass empty string as thousands_sep value
t = thousands_sep || default_thousands_sep,
// extracting the absolute value of the integer part of the number
// and converting to string
i = parseInt(n = Math.abs(n).toFixed(c)) + '',
j = ((j = i.length) > 3) ? j % 3 : 0;
return sign + (j ? i.substr(0, j)
+ t : '')
+ i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t)
+ (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '');
};
// Display Results when running snippet
var results = document.getElementById('results');
results.innerHTML += (1234.5678).toCustomFormat() + '<br />';
results.innerHTML += (1234.5678).toCustomFormat(2) + '<br />';
results.innerHTML += (1234.5678).toCustomFormat(2, ',', '.') + '<br />';
results.innerHTML += (1234.5678).toCustomFormat(2, ',', '.') + '<br />';
&#13;
<div id="results"></div>
&#13;
实施例
(1234.5678).toCustomFormat() => "1,234.5678"
(1234.5678).toCustomFormat(2) => "1,234.57"
(1234.5678).toCustomFormat(2, ',', '.') => "1.234,57"
(1234.5678).toCustomFormat(2, '.', ',') => "1,234.57"