gpt4 book ai didi

java - 基本数据类型 准确性

转载 作者:行者123 更新时间:2023-12-02 02:45:13 26 4
gpt4 key购买 nike

当我使用 long 来节省一个月毫秒时,我发现一个问题。但我打印负数。所以我做了一个测试

代码如下:

LogUtils.d(TAG, "long max time:"+Long.MAX_VALUE);
LogUtils.d(TAG, "long min time:"+Long.MIN_VALUE);
LogUtils.d(TAG, "a month time:"+1000*60*60*24*30);
LogUtils.d(TAG, "a year time:"+1000*60*60*24*365);

打印:

long max time:9223372036854775807
long min time:-9223372036854775808
a month time:-1702967296
a year time:1471228928

为什么一个月时间打印:-1702967296

最佳答案

在表达式1000*60*60*24*30中,每一项都是一个int,因此每次乘法的结果也将是int。这里出现整数溢出,导致结果为负数。即使将其转换为 long 后,它仍然是相同的负数。

您需要改为编写1000L*60*60*24*30,这会导致每次乘法的结果都是long。也就是说,1000L 是一个 long,其值为 1000,每当将 long 乘以 int 时,结果仍然是long

关于java - 基本数据类型 准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44689316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com