我正在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 没有任何效果?
如果你想检查它,这是垫子。
当 dart 编译为 JS 时,它会中继 num 的 JS 数字类型(int 或 double(。如果您在JS控制台中尝试相同的操作,您将获得相同的结果:
> Math.pow(2, 53)
9007199254740992
> Math.pow(2, 53) + 1
9007199254740992
> Math.pow(2, 53) + 2
9007199254740994