我想用Dart语言计算pow(17,18),但是它产生6665467901046659617,在Python语言中同样的表达式pow(17,18)产生14063084452067724991009。我也想在 dart 游戏中达到同样的效果。
pow(17,18)
6665467901046659617
14063084452067724991009
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)
1条答案
按热度按时间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在评论中指出的,您正在寻找: