淺談Java double 相乘的結果偏差小問題
更新時間:2017年01月22日 10:16:49 投稿:jingxian
下面小編就為大家?guī)硪黄獪\談Java double 相乘的結果偏差小問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
看下面的一段代碼的運行結果:
public class TestDouble { public static void main(String[] args) { double d =538.8; System.out.println(d*100); }
輸出結果很意外的不是 53880 而是53879.99999999999
解決方法一:
538.8*100 用*10*10 替換,才能得到我們想要的結果
538.8*10000 用 100*100替換。
解決方法二:
public class TestDouble { public static void main(String[] args) { double d =538.8; BigDecimal a1 = new BigDecimal(Double.toString(d)); BigDecimal b1 = new BigDecimal(Double.toString(100)); BigDecimal result = a1.multiply(b1);// 相乘結果 System.out.println(result); BigDecimal one = new BigDecimal("1"); double a = result.divide(one,2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留1位數 System.out.println(a); } }
以上這篇淺談Java double 相乘的結果偏差小問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
關于springboot使用rocketmq?RocketMQMessageListener參數問題
這篇文章主要介紹了springboot使用rocketmq?RocketMQMessageListener參數問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值需要的朋友可以參考下2022-11-11詳解Java如何在CompletableFuture中實現日志記錄
這篇文章主要為大家詳細介紹了一種slf4j自帶的MDC類,來記錄完整的請求日志,和在CompletableFuture異步線程中如何保留鏈路id,需要的可以參考一下2023-04-04spring-data-redis 動態(tài)切換數據源的方法
最近遇到了一個麻煩的需求,我們需要一個微服務應用同時訪問兩個不同的 Redis 集群,一般情況下我們會怎么處理呢,下面通過場景分析給大家介紹spring-data-redis 動態(tài)切換數據源的方法,感興趣的朋友一起看看吧2021-08-08淺談Java關閉線程池shutdown和shutdownNow的區(qū)別
本文主要介紹了Java關閉線程池shutdown和shutdownNow的區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09