当舍入到最近的负100位时,我会发现numeral.js的格式问题。
想想它为什么把零放在零值的美元符号之前?
var num1 = numeral(-0.006).format('$0,0.00');
var num2 = numeral(-0.002).format('$0,0.00');
document.getElementById("num1").innerHTML = num1;
document.getElementById("num2").innerHTML = num2;发布于 2018-02-07 23:38:36
可能是numeral.js中的一个bug。无论如何,如果您正在尝试这样做,您可以放弃对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
https://stackoverflow.com/questions/48673348
复制相似问题