注册 登录
编程论坛 JAVA论坛

学习中遇到的一点小问题

xu2738461746 发布于 2015-04-30 11:52, 546 次点击
结果为什么不对?
2
程序代码:
[code][code]import java.math.BigDecimal;

public class AccuratelyFloat {
    public static void main(String[] args){
        double money = 2;
        double price = 1.1;
        double result = money - price;
        System.out.println("非精确计算");
        System.out.println("剩余金额" + result);
        BigDecimal money1 = new BigDecimal("2");
        BigDecimal price1 = new BigDecimal("1.1");
        BigDecimal result1 = money1.subtract(price1);
        System.out.println("精确计算");
        System.out.println("剩余金额" + result);
    }
}
[/code][/code]- 1.1 不是应该为0.9么,为是么出来的是0.8999999
3 回复
#2
凌风zx2015-04-30 15:02
没错啊 double不能做精确计算
BigDecimal result1 = money1.subtract(price1);
        System.out.println("精确计算");
        System.out.println("剩余金额" + result);//result应该是result1
#3
秦时的明月夜2015-04-30 15:47
那是近似值……你想呀 double 64 位 位数有限制 那一定是近似值了……近视值就不准……
#4
xu27384617462015-05-08 22:02
原来是这样啊,谢了
1