問題
Java的簡單類型不能夠精確的對浮點(diǎn)數(shù)進(jìn)行運(yùn)算怜跑。比如:
package day05;
public class YzcCalTest {
public static void main(String[] args) {
double a=1;
double b=0.9;
double c=a-b;
System.out.println(a+"-"+b+"="+c);
}
}
控制臺截圖
image.png
解決方案
使用JDK提供的BigDecimal對浮點(diǎn)數(shù)進(jìn)行精確計(jì)算。
重構(gòu)后的代碼如下:
package day05;
import java.math.BigDecimal;
public class YzcCalTest {
public static void main(String[] args) {
double a=1;
double b=0.9;
BigDecimal a2 = new BigDecimal(a+"");
BigDecimal b2 = new BigDecimal(b+"");
BigDecimal c2 = a2.subtract(b2);
double c=c2.doubleValue();
System.out.println(a+"-"+b+"="+c);
}
}
控制臺截圖
image.png