gpt4 book ai didi

java - 将 long 转换为 int 以切断溢出

转载 作者:行者123 更新时间:2023-11-30 10:32:41 25 4
gpt4 key购买 nike

我想将一个 long 值转换为一个 int 值,如果 long 值太大而不适合一个 int,它应该是最大可能的 int 值。我的解决方案看起来像这样:

long longVar = ...;
int intVar = (int) Math.min(longVar, Integer.MAX_VALUE)

以更一般的方式(包括负最大值)它将是:

long longVar = ...;
int intVar = (int) (longVar < 0 ? Math.max(longVar, Integer.MIN_VALUE) : Math.min(longVar, Integer.MAX_VALUE));

是否有更简单的方法来执行此操作,例如 JRE 中的方法或其他方法?

最佳答案

一个改进是

int intVar = (int) Math.min(Math.max(longVar, Integer.MIN_VALUE),
Integer.MAX_VALUE));

Math.max 将使 [Long.Min,Long.Max] => [Int.Min, Long.Max] 并且无论结果如何,如果它大于 Int.Max 将被外部 Math 修剪.min 到 [Int.Min, Int.Max]。

我不知道 java 中有现成的方法可以执行此操作。

Java 8 方法 Math.toIntExact 将在溢出时抛出异常。并使用它来做到这一点 - 好吧,我认为这是对异常的滥用。而且可能效率低于上述结构。

关于java - 将 long 转换为 int 以切断溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42577081/

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