numeral.js - 负数 rounding/formatting 问题
numeral.js - negative number rounding/formatting issue
当四舍五入到最接近的负 100 时,numeral.js 出现格式问题。
关于为什么将零放在美元符号之前表示零值的想法?
var num1 = numeral(-0.006).format('[=12=],0.00');
var num2 = numeral(-0.002).format('[=12=],0.00');
document.getElementById("num1").innerHTML = num1;
document.getElementById("num2").innerHTML = num2;
可能是 numeral.js 中的错误。无论如何,如果这是您尝试做的事情,您可以放弃对 numeral.js 的依赖,只使用普通的 Javascript Math
和 toLocaleString()
来处理这个问题。
https://jsfiddle.net/qL41jg1x/
function toUSCurrency(x) {
var n = Math.round(x*100)/100
return n.toLocaleString(
'en-US' ,
{
style: 'currency' ,
currency: 'USD' ,
minimumFractionDigits: 2 ,
maximumFractionDigits: 2
}
) ;
}
document.getElementById("num1").innerHTML = toUSCurrency(-0.006);
document.getElementById("num2").innerHTML = toUSCurrency(-0.002);
document.getElementById("num3").innerHTML = toUSCurrency(-10000000.002);
document.getElementById("num4").innerHTML = toUSCurrency(10000000.002);
注意事项:
1) Math.round()
如果你必须处理非常大的小数,可以进入数字的浮点性质。
2) toLocaleString()
似乎所有当前主流浏览器都支持。 https://caniuse.com/#feat=internationalization
当四舍五入到最接近的负 100 时,numeral.js 出现格式问题。
关于为什么将零放在美元符号之前表示零值的想法?
var num1 = numeral(-0.006).format('[=12=],0.00');
var num2 = numeral(-0.002).format('[=12=],0.00');
document.getElementById("num1").innerHTML = num1;
document.getElementById("num2").innerHTML = num2;
可能是 numeral.js 中的错误。无论如何,如果这是您尝试做的事情,您可以放弃对 numeral.js 的依赖,只使用普通的 Javascript Math
和 toLocaleString()
来处理这个问题。
https://jsfiddle.net/qL41jg1x/
function toUSCurrency(x) {
var n = Math.round(x*100)/100
return n.toLocaleString(
'en-US' ,
{
style: 'currency' ,
currency: 'USD' ,
minimumFractionDigits: 2 ,
maximumFractionDigits: 2
}
) ;
}
document.getElementById("num1").innerHTML = toUSCurrency(-0.006);
document.getElementById("num2").innerHTML = toUSCurrency(-0.002);
document.getElementById("num3").innerHTML = toUSCurrency(-10000000.002);
document.getElementById("num4").innerHTML = toUSCurrency(10000000.002);
注意事项:
1) Math.round()
如果你必须处理非常大的小数,可以进入数字的浮点性质。
2) toLocaleString()
似乎所有当前主流浏览器都支持。 https://caniuse.com/#feat=internationalization