使用 toFixed() 和 toLocaleString() 格式化数字
Number formatting with toFixed() and toLocaleString()
我需要以给定的方式为我的网站设置数字格式。
这是我的问题:
我有 3 种不同的情况:
1)第一种情况:当我的数字是负数时,我必须在它周围加上括号,并显示它的绝对值。问题是,我必须在逗号后保留一位数字,即使是 "round" 数字,例如 (218, 9744, etc...)
2)第二种情况:当我的数等于0时,我要return0.0[这个可以]
3) 第三种情况:当我的号码是正数时,我必须return逗号后加一位。
为方便起见,我必须使用 toLocaleString()
函数将其格式化为 en-EN
。
我面临的问题似乎是使用 parseFloat()
删除尾随零。有人能帮我吗 ?
以下是我需要的一些示例:
218 -> 218.0
21800 -> 21,800.0
-21800 -> (21,800.0)
还有我的代码:
if (number < 0) {
return ('(' + Math.abs(floatNumber.toFixed(1)).toLocaleString("en-EN") + ')');
}
else if (number == 0.0) {
return (floatNumber.toFixed(1))
}
else {
return (parseFloat(floatNumber.toFixed(1)).toLocaleString("en-EN"));
}
您应该可以这样做:
function formatNumber(n) {
return n < 0
? `(${addCommas(Math.abs(n).toFixed(1))})`
: addCommas(n.toFixed(1));
}
function addCommas(n) {
let x, x1, x2, rgx;
n = String(n), x = n.split('.'), x1 = x[0], x2 = x.length > 1 ? '.' + x[1] : '', rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) x1 = x1.replace(rgx, '' + ',' + '');
return x1 + x2;
}
console.log(`
Desired Results:
218 => 218.0
21800 => 21,800.0
-21800 => (21,800.0)
Actual Results:
218 => ${formatNumber(218)}
21800 => ${formatNumber(21800)}
-21800 => ${formatNumber(-21800)}
`);
我需要以给定的方式为我的网站设置数字格式。
这是我的问题:
我有 3 种不同的情况:
1)第一种情况:当我的数字是负数时,我必须在它周围加上括号,并显示它的绝对值。问题是,我必须在逗号后保留一位数字,即使是 "round" 数字,例如 (218, 9744, etc...)
2)第二种情况:当我的数等于0时,我要return0.0[这个可以]
3) 第三种情况:当我的号码是正数时,我必须return逗号后加一位。
为方便起见,我必须使用 toLocaleString()
函数将其格式化为 en-EN
。
我面临的问题似乎是使用 parseFloat()
删除尾随零。有人能帮我吗 ?
以下是我需要的一些示例:
218 -> 218.0
21800 -> 21,800.0
-21800 -> (21,800.0)
还有我的代码:
if (number < 0) {
return ('(' + Math.abs(floatNumber.toFixed(1)).toLocaleString("en-EN") + ')');
}
else if (number == 0.0) {
return (floatNumber.toFixed(1))
}
else {
return (parseFloat(floatNumber.toFixed(1)).toLocaleString("en-EN"));
}
您应该可以这样做:
function formatNumber(n) {
return n < 0
? `(${addCommas(Math.abs(n).toFixed(1))})`
: addCommas(n.toFixed(1));
}
function addCommas(n) {
let x, x1, x2, rgx;
n = String(n), x = n.split('.'), x1 = x[0], x2 = x.length > 1 ? '.' + x[1] : '', rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) x1 = x1.replace(rgx, '' + ',' + '');
return x1 + x2;
}
console.log(`
Desired Results:
218 => 218.0
21800 => 21,800.0
-21800 => (21,800.0)
Actual Results:
218 => ${formatNumber(218)}
21800 => ${formatNumber(21800)}
-21800 => ${formatNumber(-21800)}
`);