float和double都无法进行精确计算。但是Java的设计者给编程人员提供了一个很有用的类BigDecimal,他可以完善float和double类无法进行精确计算的缺憾。再给楼主提供一种方法:- public static void main(String[] args) {
- /*
- DecimalFormat format = new DecimalFormat("0.0");//这样就好了
- double a=2.0,b=1.1,c=0.9;
- double d = Double.valueOf(format.format(a-b));
- System.out.println( d ); //测试 a-b 的结果
- if(d==c){
- System.out.println("OK");
- }else{
- System.out.println("不OK");
- }*/
-
- double a=2.0,b=1.1,c=0.9;
- BigDecimal bd1 = new BigDecimal(Double.toString(a));
- BigDecimal bd2 = new BigDecimal(Double.toString(b));
- double d = bd1.subtract(bd2).doubleValue();
- System.out.println(d);
-
- if(d==c){
- System.out.println("OK");
- }else{
- System.out.println("不OK");
- }
-
- }
复制代码 |