簡體   English   中英

十進制js將三位數字四舍五入[可能是錯誤?]

[英]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.

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