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

Flutter中如何格式化Polygon代币API返回的数值?

在Flutter中处理Polygonscan代币API返回的大数值格式

Polygonscan返回的数值是wei单位的代币数量,MATIC(Polygon原生代币)的小数位数为18位,所以需要将返回值除以10^18来转换为实际的代币数量。以下是两种可靠的实现方式:

方式一:直接使用BigInt计算(无需额外依赖)

由于API返回的数值极大,超出普通整数类型的存储范围,必须用BigInt处理:

// API返回的字符串数值
String apiReturnedValue = "14442000000000000000000";
// 转换为BigInt
BigInt weiAmount = BigInt.parse(apiReturnedValue);
// MATIC的小数位数是18,计算除数
BigInt divisor = BigInt.from(10).pow(18);
// 计算实际代币数量
BigInt actualAmount = weiAmount ~/ divisor;
// 转换为字符串或整数用于展示
String displayValue = actualAmount.toString(); // 输出"14442"

方式二:使用decimal包(避免浮点数精度误差)

如果需要处理带小数的代币数量,推荐使用decimal包保证计算精度:

  1. 先在pubspec.yaml中添加依赖:
dependencies:
  decimal: ^2.3.3
  1. 实现转换逻辑:
import 'package:decimal/decimal.dart';

String apiReturnedValue = "14442000000000000000000";
Decimal weiAmount = Decimal.parse(apiReturnedValue);
Decimal divisor = Decimal.fromInt(10).pow(18);
Decimal actualAmount = weiAmount / divisor;

// 转换为纯整数字符串(无小数)
String displayValue = actualAmount.toStringAsFixed(0); // 输出"14442"

注意:如果是其他类型的代币,需要先通过Polygonscan的API获取该代币的decimals字段值,再替换上述代码中的18进行计算。

内容的提问来源于stack exchange,提问作者AI.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:37:37