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:
parent
ab78086f1e
commit
789a703ec8
|
|
@ -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)}万';
|
||||
// 小于1万时保留原始精度(最多8位小数,去掉尾部的0)
|
||||
final formatter = NumberFormat('#,##0.########', 'zh_CN');
|
||||
return formatter.format(num);
|
||||
|
|
|
|||
|
|
@ -360,9 +360,11 @@ class _TradingPageState extends ConsumerState<TradingPage> {
|
|||
_buildMarketDataItem(
|
||||
'剩余积分股',
|
||||
market != null
|
||||
? formatCompact((Decimal.parse(market.totalShares) -
|
||||
? formatCompact(
|
||||
(Decimal.parse(market.totalShares) -
|
||||
Decimal.parse(market.totalMined))
|
||||
.toString())
|
||||
.toString(),
|
||||
precision: 4)
|
||||
: null,
|
||||
_orange,
|
||||
isLoading,
|
||||
|
|
|
|||
Loading…
Reference in New Issue