关于java中double相加的问题

来源:互联网 发布:已有淘宝账号怎么开店 编辑:程序博客网 时间:2024/05/16 16:19

碰到一个很奇怪的现象的,当计算两个数字的,时候会出现这种奇异的现象,希望能得到解释

System.out.println("1:"+isMonthPay("11.00","11"));
System.out.println("2:"+isMonthPay("11",""));
System.out.println("3:"+isMonthPay("0","2"));
System.out.println("4:"+isMonthPay("1000.11","122"));
System.out.println("5:"+isMonthPay("999","888.11"));
System.out.println("6:"+isMonthPay("3232.11","98766"));
System.out.println("7:"+isMonthPay("23232","3232"));

public static String isMonthPay(String sub_pay,String cust_pay){
double a=0.00;
double b=0.00;
if (!StringUtils.isBlank(sub_pay)) {
a=Double.parseDouble(sub_pay);
}
if (!StringUtils.isBlank(cust_pay)) {
b=Double.parseDouble(cust_pay);
}
System.out.println("a:"+a+"--b:"+b);
double c=0.00;
if(a+b>0){
c=a+b;
}
return c+"";
}


输出结果:

a:11.0--b:11.0
1:22.0
a:11.0--b:0.0
2:11.0
a:0.0--b:2.0
3:2.0
a:1000.11--b:122.0
4:1122.1100000000001--这个值
a:999.0--b:888.11
5:1887.1100000000001--还有这个值很奇怪,试了一下当不是 1122.11 或者 1887.11的时候不会出现这种情况,求解释,谢谢
a:3232.11--b:98766.0
6:101998.11
a:23232.0--b:3232.0
7:26464.0