gpt4 book ai didi

java - 将 long 转换为 int 得到 0

转载 作者:行者123 更新时间:2023-12-01 12:04:12 25 4
gpt4 key购买 nike

我一直在用这段代码进行测试:

public class Test {
public static int longToInt(long num) {
return (int) (num);
}

public static void main(String[] args) {
System.out.println(longToInt(100000000L));
}
}

我运行了它,但 longToInt 只返回 0。这是怎么回事?

最佳答案

long 转换为 int 是通过删除 long 的前 32 位来完成的。如果 long 值大于 Integer.MAX_VALUE (2147483647) 或小于 Integer.MIN_VALUE (-2147483648),则最终效果是你丢失了重要的位,结果是“垃圾”。

<小时/>

话虽如此,如果您正确编译并运行它,您提供的代码的行为并不像您所说的那样。原始版本应该打印一个意想不到的数字......但不是零。修改后的版本应按预期打印 1000000。

<小时/>

... is there a way I can store a long number larger than Integer.MAX_VALUE inside an int number?

没有。

嗯,严格来说是的......在某些情况下。您可以做一些事情来映射数字,例如,如果您知道您的数字始终在 ABB - A 范围内code> 小于 232,那么您可以通过减去 A 将该范围内的 long 映射到 int > 来自它。

但是,如果您存储在 long 中的数字域的大小大于 232,则在数学上不可能定义这样的映射。通常就是这样。

关于java - 将 long 转换为 int 得到 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27762445/

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