You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python与Dart的pow()函数相同输入输出结果不同?

在Dart中获取和Python一致的pow(17,18)结果

问题原因

  • Dart的dart:math库中的pow()函数返回double类型,而double的精度上限为2^53(约9×10¹⁵),17¹⁸的准确值远超这个范围,导致精度丢失,返回近似值6665467901046659617。
  • Python的int是任意精度类型,可精准存储超大整数,因此能得到精确结果14063084452067724991009。

解决方案

方法1:使用BigInt的pow方法

Dart的BigInt支持任意精度整数运算,直接调用其pow方法即可获得准确结果:

void main() {
  var result = BigInt.from(17).pow(18);
  print(result); // 输出 14063084452067724991009
}

方法2:使用int的pow方法(Dart 2.10及以上版本)

从Dart 2.10开始,int类型新增pow方法,运算结果在int范围内时返回int,超出范围自动返回BigInt:

void main() {
  var result = 17.pow(18);
  print(result); // 输出 14063084452067724991009
}

若你的Dart版本低于2.10,建议升级版本或采用BigInt的实现方式。

内容的提问来源于stack exchange,提问作者Vivek Rai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:55:12