fix(mining-app): 修复剩余积分股显示精度不足导致与总量看起来一样

问题:totalShares=100.02亿,totalMined≈18万,相减后≈100.0182亿,
但 formatCompact 在亿级别只保留2位小数,四舍五入后仍显示"100.02亿",
与总量无法区分。

修复:
- formatCompact 新增可选 precision 参数(默认2,向后兼容)
- 剩余积分股使用 precision=4,显示为"100.0182亿",可见差异

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-03-02 09:25:31 -08:00
parent ab78086f1e
commit 789a703ec8
2 changed files with 9 additions and 7 deletions

View File

@ -17,13 +17,13 @@ String formatNumber(num? value) {
return formatter.format(value);
}
String formatCompact(String? value) {
String formatCompact(String? value, {int precision = 2}) {
if (value == null || value.isEmpty) return '0';
try {
final num = double.parse(value);
if (num >= 1e12) return '${(num / 1e12).toStringAsFixed(2)}万亿';
if (num >= 1e8) return '${(num / 1e8).toStringAsFixed(2)}亿';
if (num >= 1e4) return '${(num / 1e4).toStringAsFixed(2)}';
if (num >= 1e12) return '${(num / 1e12).toStringAsFixed(precision)}万亿';
if (num >= 1e8) return '${(num / 1e8).toStringAsFixed(precision)}亿';
if (num >= 1e4) return '${(num / 1e4).toStringAsFixed(precision)}';
// 180
final formatter = NumberFormat('#,##0.########', 'zh_CN');
return formatter.format(num);

View File

@ -360,9 +360,11 @@ class _TradingPageState extends ConsumerState<TradingPage> {
_buildMarketDataItem(
'剩余积分股',
market != null
? formatCompact((Decimal.parse(market.totalShares) -
Decimal.parse(market.totalMined))
.toString())
? formatCompact(
(Decimal.parse(market.totalShares) -
Decimal.parse(market.totalMined))
.toString(),
precision: 4)
: null,
_orange,
isLoading,