java中的整除和取余有什么细节。

Python013

java中的整除和取余有什么细节。,第1张

在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类型的,计算结果就会是正确的了