我怎么知道达到Long.MAX_VALUE的'long'值

wyf*_*wyf 0 java android genetic-algorithm

下面是我的代码,但该if声明不起作用.

int i = 0;
while (true) {
  long l = fibonacci(i++);
  if (l < 0L && l > Long.MAX_VALUE) {
    System.out.println("over");
    break;
}
Run Code Online (Sandbox Code Playgroud)

}

我怎么知道long价值是否达到了Long.MAX_VALUE

rge*_*man 10

如果某个long值超出了a的范围long,则会发生溢出.由于这种溢出,下一个斐波纳契数似乎是负数.因此,检查小于零的数字是正确的.但是你不需要检查它是否大于Long.MAX_VALUE,因为没有long能满足这个条件.这&&是另一个错误; 数字不能同时小于零且大于那个(任何)正数.

您只需要:

if (l < 0L) {
Run Code Online (Sandbox Code Playgroud)