You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter/Dart印度数字系统格式化:转lac/cr并保留两位小数

在Flutter/Dart中转换数字为Lac/CR格式并保留两位小数

实现逻辑

  1. 先清理输入字符串中的逗号,将其转换为可计算的数值类型
  2. 基于印度计数体系的单位阈值判断:
    • 1 Lac = 100,000(10万)
    • 1 CR = 10,000,000(1000万)
  3. 按对应单位计算转换后的值,强制保留两位小数并拼接单位

代码实现

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:40:35