![](/img/trans.png)
[英]Reliable JS rounding numbers with toFixed(2) of a 3 decimal number
[英]decimal js rounding 3digit numbers [probably a bug?]
我正在使用decimal.js來計算數字,並通過處理大數字來利用其優勢。
現在我到了要把數字四舍五入到特定乘法器的地步。
一切正常,直到我發現這個問題;
new Decimal(750).toNearest(500,3).toNumber() //-> 500
該行將輸出500。這僅僅是一個錯誤還是我的代碼出錯了? 如果這是一個錯誤,我想知道為什么僅在下面顯示的特定數字下會發生...
new Decimal(75).toNearest(50,2).toNumber() //-> 100
new Decimal(7500).toNearest(5000,4).toNumber() //-> 10'000
當您在十進制.js API上使用這些語句時
只有3位數可以正確取整:
new Decimal(300).toNearest(200,3).toNumber() //-> 200
new Decimal(450).toNearest(300,3).toNumber() //-> 300
new Decimal(600).toNearest(400,3).toNumber() //-> 400
請注意.toNearest-function中的第二個屬性: https ://mikemcl.github.io/decimal.js/#modes
2:向無窮大方向舍入(向上)
3:朝-Infinity倒數(向下)
4:向最近的鄰居舍入。 如果等距,則從零舍入。
因此,您必須考慮預期的結果,然后選擇正確的舍入方法。 四舍五入方法與位數無關。
new Decimal(75).toNearest(50,2).toNumber() //-> 100
new Decimal(75).toNearest(50,3).toNumber() //-> 50
new Decimal(75).toNearest(50,4).toNumber() //-> 100
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.