Flutter/Dart印度数字系统格式化:转lac/cr并保留两位小数
在Flutter/Dart中转换数字为Lac/CR格式并保留两位小数
实现逻辑
- 先清理输入字符串中的逗号,将其转换为可计算的数值类型
- 基于印度计数体系的单位阈值判断:
- 1 Lac = 100,000(10万)
- 1 CR = 10,000,000(1000万)
- 按对应单位计算转换后的值,强制保留两位小数并拼接单位
代码实现
String convertToLacCr(String numberStr) { // 移除所有逗号并转换为数值 final num rawValue = double.parse(numberStr.replaceAll(',', '')); if (rawValue >= 10000000) { final double crValue = rawValue / 10000000; return "${crValue.toStringAsFixed(2)} cr"; } else if (rawValue >= 100000) { final double lacValue = rawValue / 100000; return "${lacValue.toStringAsFixed(2)} lac"; } else { // 小于1Lac的场景,可根据需求调整返回格式 return rawValue.toStringAsFixed(2); } } // 测试示例 void main() { print(convertToLacCr("1,64,023")); // 输出: 1.64 lac print(convertToLacCr("2,34,12,456")); // 输出: 2.34 cr }
补充说明
toStringAsFixed(2)会自动处理四舍五入,若不需要四舍五入,可先使用truncateToDouble()截断后再格式化- 如果输入是纯数值(而非带逗号的字符串),可直接传入数值类型,省略字符串清理步骤
- 可根据需求扩展支持其他印度计数单位(如Thousand等)
内容的提问来源于stack exchange,提问作者Aditya Patil
相关产品推荐
相关产品推荐

