Java 中 double 類資料運算精度不准怎麼解決呢?

時間 2021-06-01 01:42:17

1樓:wuxinliulei

final String jsonStr = 「」;

final JsonObject jsonObject = new JsonObject(jsonStr);

final String payFee = jsonObject.getString("payFee");

final BigDecimal bigDecimal = new BigDecimal(payFee);

final BigDecimal bigDecimal100 = new BigDecimal("100");

final BigDecimal result = bigDecimal.multipy(bigDecimal100);

System.out.println(result.intValue());

精度損失發生在計算期間,如果我們使用

final double payFee = jsonObject.getDouble("payFee");

System.out.println((int)(payFee * 100));

得出的結果是1605,是不精確的。

事實上還有一種做法可以處理這種精度問題;

將double和float型別的資料轉換為String型別,對String型別的字元進行挨個的計算即可。

2樓:EnjoyMoving

用BigDecimal

不過注意要使用其建構函式BigDecimal(String),而不是BigDecimal(double)。。。

下面是我的一點小測試:

Java中的類和c 中的類,在使用中要理解?

Lieu 長文慎入,內含 星際 穿越 我覺得這是乙個程式語言設計的問題,也是個空間緯度的問題.很有意思.還沒接受過科班的CS的訓練,程式設計經驗僅限J2EE的前後端,拋磚引玉,談談自己的思考.二維世界 我認為程式語言的基本元素是操作符和變數,而通過操作符操作變數這一行為即乙個語句.比如有變數a,有操...

Java做後台介面,資料庫對應的實體類和Controller層給前端反序列化的實體類是否應該是兩個類?

404菌 多建幾個VO DTO 又沒事,前端要啥字段給啥字段。有些時候前端要的資料會從幾個表裡取。我所在專案是要求EO 資料庫對應實體類 最上不能出service層,即使沒有改變也得換乙個相同欄位的VO給到ctrl層 北冥有魚 介面返回的物件屬性一般是等於或多於前端所需的屬性。資料庫中的字段會有一些...

有關Java中類的繼承中方法繼承的問題?

Intopass 對於非靜態方法,有幾種呼叫方法。staticMethod this.staticMethod instance.staticMethod ClassName.staticMethod 強烈建議只使用第一種直接呼叫和第四種通過類名呼叫的方法。並且將第一種方法等同於第四種方法,並理解對...