我在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。
答案 0 :(得分:4)
当dart编译为JS时,它会转发 num ( int 或 double )的JS Number类型。如果您在JS控制台中尝试相同的操作,您将得到相同的结果:
> Math.pow(2, 53)
9007199254740992
> Math.pow(2, 53) + 1
9007199254740992
> Math.pow(2, 53) + 2
9007199254740994