A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄成超 中级黑马   /  2013-1-29 17:54  /  1264 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static void main(String[] args) {         
  2.                 double i = 5.0;            
  3.                 double j = 1 / 4 + 3 / 4 + i + 12 / 6.0 + 3 / 4 + 1 / 4;      
  4.                 System.out.println(j);        
  5.                 }
复制代码
结果为7。原因是什么?是每次分数运算结果因为取整,所以都为0,还是什么原因?java强类型能否解释一下

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 俩int型的数做运算结果是int型的。。那几个.

查看全部评分

2 个回复

倒序浏览
double j=1 / 4 + 3 / 4 + i + 12 / 6.0 + 3 / 4 + 1 / 4;  

这里只是把1 / 4 + 3 / 4 + i + 12 / 6.0 + 3 / 4 + 1 / 4;  的结果进行double 进行保存。

可是程序在执行的时候1/4结果是0    因为他们是进行了int之间的运算,int类型在进行保存结果是舍掉小数部分,并没有进行4舍5入,是直接舍去的!!!所以结果是为了0

要解决这方面的问题,一般进行运算时,一边都是要有个double类型改后double j=1.0/4+3.0/4+i+12/6.0+3.0/4+1.0/4;

就这么了解吧,在进行多次运算时,除以或者是乘以 为了数较为精确都要有个值是double类型,而后再进行相加

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
double j=1 / 4 + 3 / 4 + i + 12 / 6.0 + 3 / 4 + 1 / 4;
右边在运行的时候都是以int类型运算的,1 / 4 =0;3 / 4 =0;i=5;12/6.0=2.0;3/4=0;1/4=0; 加在一块所以等于7
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马