【发布时间】:2013-09-18 03:36:46
【问题描述】:
这段代码应该返回两个数字中较小的一个,它返回一个类似于较大数字的负数:
Math.min(15, 21474836477) --> returns -2147483642
我怀疑这与int's 的范围有关,所以我将值更改为long,程序运行正常。
我不太明白它返回的看似随机的数字 - 为什么它是 -2147483643 而不是我输入的实际数字 -21474836477?差异是由于溢出量造成的,还是受到 Math.min 其他参数的某种影响?
【问题讨论】:
-
请阅读 int 并检查最大 int 为:2147483647。看here。还要阅读溢出。您的问题可能与why Integer.MAX_VALUE + 1 == Integer.MIN_VALUE? 重复。查看答案。另请阅读two's complement。
-
请发帖SSCCE。我无法重现您的结果。
-
调用
Math.min之前使用的变量发生了什么?
标签: java