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

cetgtptt  于 2023-01-06  发布在  Python
关注(0)|答案(1)|浏览(183)

我想用Dart语言计算pow(17,18),但是它产生6665467901046659617,在Python语言中同样的表达式pow(17,18)产生14063084452067724991009
我也想在 dart 游戏中达到同样的效果。

sxpgvts3

sxpgvts31#

看起来Dart在某个点上遇到了溢出,并且不(像Python一样)支持任意大的整数。
你可能会使用Dart 2,它对整数有64位的限制,这个大小的maxint是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)

相关问题