我的格式化程序看起来像这样
const formatter = new Intl.NumberFormat('en-NZ', {
style: 'currency',
currency: 'NZD',
minimumFractionDigits: 2,
});Run Code Online (Sandbox Code Playgroud)
如何调整此值以使整数具有0小数位数
formatter.format(4); // want output "$4"
Run Code Online (Sandbox Code Playgroud)
分数总是显示两位数?
formatter.format(4.1); // want output "$4.10"
Run Code Online (Sandbox Code Playgroud)
crt*_*tag 24
The correct way to do it when using Intl.NumberFormat is to set both maximumFractionDigits and minimumFractionDigits options in constructor while validating input value using a modulo % for a whole number (per /sf/answers/3480721051/ which is a CORRECT answer!). The accepted answer is sort of string manipulation.
const fraction = new Intl.NumberFormat('en-NZ', {
style: 'currency',
currency: 'NZD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
const formatter = new Intl.NumberFormat('en-NZ', {
style: 'currency',
currency: 'NZD',
minimumFractionDigits: 2,
});
let number = 4.1;
if(number % 1 == 0)
console.log(fraction.format(number));
else
console.log(formatter.format(number));
number = 4;
if(number % 1 == 0)
console.log(fraction.format(number));
else
console.log(formatter.format(number));Run Code Online (Sandbox Code Playgroud)
Ger*_*NCO 20
我会实现两种不同的格式并使用模数验证它 %
4 % 1 == 0
4.1 % 1 == .1
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
4 % 1 == 0
4.1 % 1 == .1
Run Code Online (Sandbox Code Playgroud)
如果小数位全为零,则可以使用新Intl.NumberFormat选项TrailingZeroDisplay来去除小数位,否则将使用最小和最大小数位选项。这复制了使用两个格式化程序和仅一个格式化程序的答案的行为
const formatter = new Intl.NumberFormat('en-NZ', {
style: 'currency',
currency: 'NZD',
minimumFractionDigits: 2,
maximumFractionDigits: 2,
trailingZeroDisplay: 'stripIfInteger'
});
Run Code Online (Sandbox Code Playgroud)
formatter.format(4); // outputs "$4"
formatter.format(4.0); // outputs "$4"
formatter.format(4.1); // outputs "$4.10"
formatter.format(4.145); // outputs "$4.15"
Run Code Online (Sandbox Code Playgroud)
您可以尝试这样的事情:
formatter.format(amount).replace(/\D00$/, '');
Run Code Online (Sandbox Code Playgroud)
小智 6
当我研究这个时,我在 Github 上发现了一篇关于它的帖子,建议同时使用 maximumFractionDigits 和 minimumFractionDigits。文章指出,如果两者都没有使用,则会引发错误。
// works
var Intl = require('intl');
new Intl.NumberFormat("en", {
maximumFractionDigits: 0,
minimumFractionDigits: 0,
style: 'currency',
currency: 'USD'
}).format(4000.33)
Run Code Online (Sandbox Code Playgroud)
https://github.com/ember-intl/ember-intl/issues/167