为什么我在Java中使用乘法(*)得到错误的结果

3

我刚开始学习Java,只是想要计算一年中的毫秒数,但结果与预期不符。

long milisecondsInYear = 1000*60*60*24*365;
System.out.println(milisecondsInYear); // Expect 31536000000 but get 1471228928

请为我提供建议。非常感谢您的帮助。


这已经超出了长的范围。 - undefined
1
你正在使用int算术进行所有的数学计算。 - undefined
1
使用 1000L*60*60*24*365(注意 L) - undefined
1个回答

1
每当你进行任何计算时,Java都会默认将其作为int来计算,即使你将结果保存在long变量中。
实际的结果无法适应int变量,因此你得到那个值。
要解决这个问题,你需要在结尾处添加一个L,让Java知道这实际上是一个long。
long milisecondsInYear = 1000*60*60*24*365L;
System.out.println(milisecondsInYear); // Expect 31536000000 but get 1471228928

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接