在java中,double型的数据与float型的数据相加,结果怎么会这样呢??这是什么意思?

fengfen_yu 2012-03-02 11:05:17
public class helloworld {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double a=2.8;
float b=8.4f;
boolean c=false;
System.out.println(a);
a=b;
System.out.println(a+b);(就是这里)

System.out.println(c);
System.out.println('好');

}



结果为这个
2.8
16.799999237060547为什么是这个结果??就算它的结果为double型,那也该是11.2啊??
false





}
...全文
509 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqhw123 2012-03-05
  • 打赏
  • 举报
回复
a = b;
把b赋给了a,数值的范围变大了,导致了数据的不准确,即这个时候a的值不是8.4
所以出现了这样的结果。
菖蒲老先生 2012-03-05
  • 打赏
  • 举报
回复
浮点数的运算本来就不是很精确的,它只能返回无限接近结果的值。
详见 java解惑

一般浮点数的运算用BigDicemal,可以度娘一下。。
qq9209999 2012-03-05
  • 打赏
  • 举报
回复
这个问题还需要想?

肯定是那个结果

a = b ;
这个时候a就是8.4f了 。

再给你延伸一下

比如说:
User us = new User();

us。setName(“123”);

User us1 = new User();
us。setName(“345”);
System.out.println(us.getName());
?????
zhangzhixxm 2012-03-04
  • 打赏
  • 举报
回复
结果应该是float类型
Long88888888M 2012-03-02
  • 打赏
  • 举报
回复
你把b的值赋给了a,a就等于8.4。在输出(a+b)就是这样的结果呢
代号裤子 2012-03-02
  • 打赏
  • 举报
回复
a=b了
tauke_wang 2012-03-02
  • 打赏
  • 举报
回复
你在中间是将b的值赋予a了,所以结果就成这样了

58,451

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧