Dart:可以加 2 但不能加 1

Dart: able to add 2 but not 1

我正在 DartPad 中测试这个片段:

import 'dart:math';

void main() {
  int ov = pow(2, 53);
  ov = ov + 0;
  print('$ov');
  ov = ov + 1;
  print('$ov');
  ov = ov + 2;
  print('$ov');
}

我是 Dart 新手。我试图溢出变量,但显然 Dart 具有任意精度整数。输出有点令人惊讶:

9007199254740992
9007199254740992
9007199254740994

为什么我可以加2,加1却没有任何效果?

这里是the pad如果你想检查它。

当 dart 被编译成 JS 时,它依赖于 num 的 JS 数字类型(intdouble).如果您在 JS 控制台中尝试相同的操作,您将得到相同的结果:

> Math.pow(2, 53)
9007199254740992
> Math.pow(2, 53) + 1
9007199254740992
> Math.pow(2, 53) + 2
9007199254740994