首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numeral.js -负数舍入/格式化问题

numeral.js -负数舍入/格式化问题
EN

Stack Overflow用户
提问于 2018-02-07 21:13:31
回答 1查看 1.5K关注 0票数 3

当舍入到最近的负100位时,我会发现numeral.js的格式问题。

想想它为什么把零放在零值的美元符号之前?

小提琴

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-07 23:38:36

可能是numeral.js中的一个bug。无论如何,如果您正在尝试这样做,您可以放弃对numeral.js的依赖,只需使用普通的Javascript MathtoLocaleString()来处理这个问题。

对象/数字/toLocaleString

https://jsfiddle.net/qL41jg1x/

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48673348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档