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

 我来答
匿名用户
2019-12-26
展开全部

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

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式