java中两个double值相加

1)doublen=0.01;doublem=0.06;System.out.println(m+n);//0.06999999999999999比实际的0.07小了2)... 1)
double n=0.01;
double m=0.06;
System.out.println(m+n);//0.06999999999999999比实际的0.07小了
2)
double n=0.01;
double m=0.05;
System.out.println(m+n);//0.060000000000000005比实际的0.06大了
2)
double n=0.01;
double m=0.02;
System.out.println(m+n);//0.03
3)
double n=0.01;
double m=0.19;
System.out.println(m+n);//0.2
我只想知道怎么推断出结果大致在什么范围。。比实际值大一些还是小一些还是正好等于?
我问这个的原因是,有一道笔试题,直接就这么问我的。。
展开
 我来答
kq346635081
2013-12-29 · TA获得超过290个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:99.8万
展开全部
这个没法简单判断,除非你了解浮点数的底层二进制各种位运算的规则,然后计算得出结论。。。不过你这道题明显不需要这么做,你看,m + n 以我们正常思维来算等于0.6,那你就去答案里面找最接近0.6的选项,也就是D。浮点数运算虽然有时会损失精度,但还不至于差很远,差不到0.5或者0.7那档。考试不会考特别变态的,基本上都是有窍门的
匿名用户
2013-12-28
展开全部

使用这个处理

java.math.BigDecimal

double n=0.01;
double m=0.06;
java.math.BigDecimal d1=new java.math.BigDecimal(String.valueOf(n));
java.math.BigDecimal d2=new java.math.BigDecimal(String.valueOf(m));

System.out.println(d1.add(d2).doubleValue());
追问
这个我知道,我要问的明明是怎么推断他的值是多少。。。你没看我的问题
追答
简单地,可以认为是java double的“BUG”

百度 java double 精度

有不少讨论
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lianzhengze
2013-12-28
知道答主
回答量:26
采纳率:0%
帮助的人:24万
展开全部
使用java.math.BigDecimal类来处理,查查API里有的
追问
这个我知道,我要问的明明是怎么推断他的值是多少。。。你没看我的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式