我想在Dart语言中计算pow(17,18)
,但它产生了6665467901046659617
。在Python语言中,相同的表达式pow(17,18)
生成14063084452067724991009
。
我也想在Dart中获得相同的结果。
看起来Dart在某个点上遇到了溢出,并且不(像Python)支持任意大的整数。
您可能使用的是Dart 2,它对整数有64位的限制。该大小的最大值为9,223,372,036,854,775,807。Dart 1确实有一个类似于Python的整数数学实现,允许任意大小的整数(仅受可用内存限制)。
所以,你看到一个像6,665,467,901,046,659,617这样的值是有意义的,这只是pow(17,18)
对Dart 2 + 1的最大整数值取模的结果。
BigInt.from(17).pow(18)