看下面的一段代碼的運行結(jié)果:
1
2
3
4
5
6
7
8
9
|
public class TestDouble { public static void main(String[] args) { System.out.println(d* 100 ); } |
輸出結(jié)果很意外的不是 53880 而是53879.99999999999
解決方法一:
538.8*100 用*10*10 替換,才能得到我們想要的結(jié)果
538.8*10000 用 100*100替換。
解決方法二:
1
2
3
4
5
6
7
8
9
10
11
12
|
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 )); System.out.println(result); BigDecimal one = new BigDecimal( "1" ); double a = result.divide(one, 2 ,BigDecimal.ROUND_HALF_UP).doubleValue(); //保留1位數(shù) System.out.println(a); } } |
以上這篇淺談Java double 相乘的結(jié)果偏差小問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。