/// 分转元字符串,千分位分组 + 两位小数,纯整数运算(金额禁 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'; }