运行此命令时,Long
数据类型出现问题:
Long nanos = 3 * 1000000000
println nanos
打印出-1294967296
,而不是3000000000
,我不知道为什么
我在this页面上看到Long已经足够了。那有什么不对?
答案 0 :(得分:10)
您必须将第二个常量标记为long,否则它将被视为溢出的整数。使用:
Long nanos = 3 * 1000000000L
答案 1 :(得分:4)
答案 2 :(得分:4)
算法是用int进行的,然后保存为Long。试试这个:
Long nanos = 3L * 1000000000L
答案 3 :(得分:1)
您可以使用groovy shell(groovysh)轻松检查:
groovy:000> 3.class
===> class java.lang.Integer
文字3是java.lang.Integer
。
groovy:000> (3 * 1000000000).class
===> class java.lang.Integer
乘法的乘积也是java.lang.Integer
groovy:000> 3 * 1000000000
===> -1294967296
现在很容易看到在过度发生之后整数被转换为Long