【问题标题】:numeral.js - negative number rounding/formatting issuenumeric.js - 负数舍入/格式问题
【发布时间】:2018-02-08 08:15:07
【问题描述】:

当舍入到最接近的第 100 位负数时,numeric.js 出现格式问题。

思考为什么要将零放在美元符号之前以表示零值?

FIDDLE

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;

【问题讨论】:

    标签: javascript numeral.js


    【解决方案1】:

    可能是 numeric.js 中的错误。无论如何,如果这是您尝试做的事情,您可以放弃对 numeric.js 的依赖,只使用纯 Javascript MathtoLocaleString() 来处理这个问题。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/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

    【讨论】:

    • 另请注意,numeric.js 上的 cmets 指向它已被放弃。 github.com/adamwdraper/Numeral-js
    • 在问题中,有人询问项目是否被放弃而维护者没有回应。 github.com/adamwdraper/Numeral-js/issues/566 另外还有 91 个拉取请求,最后一次更新是 11 个月前。可能值得分叉项目,合并拉取请求,看看它们中的任何一个是否解决了问题。但同样,如果你没有将 numeric.js 用于其他任何事情,我会说摆脱依赖并使用 vanilla js。
    • 另一个注意事项:在 Javascript 中,+0 和 -0 是不同的(从 -0.002 舍入到 -0.00)。我相信这是在Math.round(x*100)/100 中处理的,因为它将-0 变成了0。这给了你0.00 美元而不是-0.00 美元。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 2020-09-17
    相关资源
    最近更新 更多