簡體   English   中英

numeric.js - 負數舍入/格式問題

[英]numeral.js - negative number rounding/formatting issue

在四舍五入到最接近的負 100 位時,我遇到了 numeric.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;

可能是 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM