gpt4 book ai didi

Java乘法运算行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:21 24 4
gpt4 key购买 nike

我写了一个方法将给定数字从天数转换为毫秒数:

private long expireTimeInMilliseconds;
...
public void setExpireTimeInDays(int expireTimeInDays)
{
expireTimeInMilliseconds = expireTimeInDays * 24 * 60 * 60 * 1000;
}

我很难弄清楚我做错了什么。现在我的问题:这个错误这么明显吗?

修正方法:

private long expireTimeInMilliseconds;
...
public void setExpireTimeInDays(int expireTimeInDays)
{
expireTimeInMilliseconds = ((long) expireTimeInDays) * 24 * 60 * 60 * 1000;
}

如果我在计算之前不将整数转换为 long,我会得到一个完全错误的结果。

最佳答案

很明显吗?我想这取决于您使用 Java 的时间以及您必须处理毫秒数的次数。当然,最多 24 天左右应该没问题...

我觉得最大的提示应该是System.currentTimeMillis()返回一个long。这是一个很好的迹象,表明毫秒数可以变大。您设置的变量类型也应该是一个很好的提示。

当然,您知道如果您对整数进行算术运算,结果将是int,并在溢出时回绕。这是否足够明显可以进行辩论,但这将是一个毫无意义的讨论。在 C# 中,如果您打开溢出检查,您会很快发现错误 - 但没有多少开发人员这样做(事实上,我没有这样做,尽管我可能应该这样做)。

关于Java乘法运算行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/512266/

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