为什么python中的pow()函数和dart中的pow()函数对于相同的输入产生不同的结果?



我想在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的最大整数值取模的结果。

然而,Dart 2仍然有BigInt,正是为了这个目的。正如用户@mmcdon20在评论中指出的,您正在寻找:
BigInt.from(17).pow(18)

最新更新