java 正整数相乘变为负数 5C
 System.out.println("系统设置毫秒数"+30*86400000);

系统设置毫秒数-1702967296
这是什么原因呢
怎么解决呢

7个回答

数字太大了,,导致首位为1,,,

像这种比较大的数字,,,用 BigInteger,java官方给出的类,,,相当好用

楼上的都说正确了,整数int的范围如下: -2147483648~2147483647 而你的30*86400000 已经远远超过int 的范围了。就会变为负数。
你可以去了解下数据类型范围。

数据过大超出了int的范围,而导致溢出了,大数相乘不能直接用乘法。
可以用BigDecimal类封装的方法来执行。

变成语言的基础知识,还是多看看书把

数据太大,直接结果用long就好

shaobo7705601
伯乐_博 回复powerApower: 86400000改成86400000L,在把结果写成long
接近 3 年之前 回复
powerApower
powerApower 用long不行,我试过了
接近 3 年之前 回复

long a = 30;
long b = 86400000;
long c = (a *b);
System.out.println("系统设置毫秒数"+c);

java基础,整数型的范围

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐