黑马程序员技术交流社区
标题:
java中易错问题
[打印本页]
作者:
黄成超
时间:
2013-1-29 17:54
标题:
java中易错问题
public static void main(String[] args) {
double i = 5.0;
double j = 1 / 4 + 3 / 4 + i + 12 / 6.0 + 3 / 4 + 1 / 4;
System.out.println(j);
}
复制代码
结果为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