今天在寫段代碼模擬計算器的時候,偶然發現,當我進行小數運算的時候,竟然出現了令我驚訝的結果,后來問了問度娘,才曉得,原來這里面還有點知識呢,下面是介紹:
你猜下面幾句的結果是多少?
1 public class Demo{ 2 @Test 3 public void demo3() { 4 System.out.println(1 - 0.42); 5 System.out.println(2.4 + 1.2); 6 System.out.println(4.015 * 100); 7 System.out.println(123.1 / 100); 8 } 9 }
但我想告訴你,在控制台上輸出的結果是:
0.5800000000000001 3.5999999999999996 401.49999999999994 1.2309999999999999
那么對應的解決方案是啥呢?
我這里給出了一段代碼:
1 public class Demo{ 2 @Test 3 public void demo3() { 4 BigDecimal bd = new BigDecimal("1"); 5 System.out.println(bd.subtract(new BigDecimal("0.42"))); 6 } 7 }
這段代碼就告訴了你,當你用到浮點數的時候,為避免出現精度失真的情況,可以用BigDecimal來計算,注意:BigDecimal的構造器中,你傳入的是字符串喲!!
如果你還想進行加法、乘法、除法的話,推薦你看看JDK中java.lang.math這個包下的BigDecimal具體方法,可以滿足你的一般需求(包括小數點后保留幾位等),當然,要是你覺得這樣還是不夠簡便的話,你完全可以自己寫個tool類,來專門完成你的運算,內部就用BigDecimal來實現,用的時候,你想怎么調用怎么調用(前提是你的tool類中要封裝好這些方法)。
嘿嘿,就這些了!!