黑马程序员技术交流社区

标题: java中易错问题 [打印本页]

作者: 黄成超    时间: 2013-1-29 17:54
标题: java中易错问题
  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强类型能否解释一下
作者: 杨世平    时间: 2013-1-29 18:24
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类型,而后再进行相加
作者: 刘军亭    时间: 2013-1-29 18:52
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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2