标题:学习中遇到的一点小问题
只看楼主
xu2738461746
Rank: 2
等 级:论坛游民
威 望:1
帖 子:39
专家分:70
注 册:2014-9-22
结帖率:60%
已结贴  问题点数:20 回复次数:3 
学习中遇到的一点小问题
结果为什么不对?
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
搜索更多相关主题的帖子: result money price 
2015-04-30 11:52
凌风zx
Rank: 8Rank: 8
来 自:万灵娱乐城
等 级:蝙蝠侠
威 望:7
帖 子:88
专家分:790
注 册:2015-4-11
得分:10 
没错啊 double不能做精确计算
BigDecimal result1 = money1.subtract(price1);
        System.out.println("精确计算");
        System.out.println("剩余金额" + result);//result应该是result1

初出茅庐
2015-04-30 15:02
秦时的明月夜
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:13
帖 子:126
专家分:504
注 册:2013-3-12
得分:10 
那是近似值……你想呀 double 64 位 位数有限制 那一定是近似值了……近视值就不准……
2015-04-30 15:47
xu2738461746
Rank: 2
等 级:论坛游民
威 望:1
帖 子:39
专家分:70
注 册:2014-9-22
得分:0 
原来是这样啊,谢了
2015-05-08 22:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-444680-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041323 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved