179051a8fa
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
21 lines
689 B
Dart
21 lines
689 B
Dart
/// 分转元字符串,千分位分组 + 两位小数,纯整数运算(金额禁 float)。
|
||
///
|
||
/// 例:299900 → "2,999.00";100 → "1.00";0 → "0.00";负数保留符号。
|
||
String yuanFromMinor(int minor) {
|
||
final negative = minor < 0;
|
||
final abs = negative ? -minor : minor;
|
||
final yuan = abs ~/ 100;
|
||
final cents = abs % 100;
|
||
|
||
final yuanDigits = yuan.toString();
|
||
final len = yuanDigits.length;
|
||
final buffer = StringBuffer();
|
||
for (var i = 0; i < len; i++) {
|
||
if (i > 0 && (len - i) % 3 == 0) buffer.write(',');
|
||
buffer.write(yuanDigits[i]);
|
||
}
|
||
|
||
final centsStr = cents.toString().padLeft(2, '0');
|
||
return '${negative ? '-' : ''}$buffer.$centsStr';
|
||
}
|