Java中的一个除法的取整问题,如下图我知道是因为取整的原因但是我想清楚是怎样一个过程?

如题所述

原理很简单,在java中所有名文写在代码里的数字,都被编译器按照int类型处理,int类型变量之间进行四则运算结果还是int类型的

time / (1000 * 60 * 60 * 24 * 365)

这个语句中,括号内的乘法计算结果就是int类型的,但是这个乘积的结果超过了int的表示范围了































































int 能表示的最大值 Integer.MAX_VALUE = 2147483647 (本人系统MacOS10.15, jdk1.8, 不同系统不同版本jdk下,这个值可能不同,但是相差不大)































而你表达式括号内的乘法结果是31536000000,已经远大于int的表示范围了,因此这个计算结果是越界的,错误的,所以最终得到的结果是错误的

把第一个计算数改成long类型的,计算结果就会是正确的了

温馨提示:答案为网友推荐,仅供参考
相似回答