簡體   English   中英

比較BigDecimal值和double值是否等於兩個小數位

[英]Compare that BigDecimal value and double value are equal to two decimal places

我正在使用一個返回雙精度值的API。 我需要將該值與BigDecimal值進行比較,以等於兩位小數位。

我應該將BigDecimal轉換為double然后比較

Math.abs(myBigDecimal.doubleValue() - apiDouble) >= .01

還是這種方法有問題? 也許我應該將double轉換為BigDecimal,然后進行比較?

否。盡管IEEE double具有保護位,但它不能精確表示十進制值。 使用舍入將double轉換為BigDecimal,然后使用compareTo()。 請注意,equals()考慮了小數位,因此compareTo()更安全。 您可能還需要舍入BigDecimal。

移位所需的小數位數,將它們的雙精度數乘以100,使用Math.ceil或Math.floor(如您所願)以除去其余的小數位數:

Math.ceil(myBigDecimal.doubleValue()*100) == Math.ceil(apiDouble*100)

這等效於不舍入而截斷。 如果您擔心舍入,請乘以1000,將長除數除以10並進行比較。

暫無
暫無

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

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