Android Studio中如何实现孟加拉国本地货币的数字数位分隔格式化
孟加拉国货币数位分隔实现方案
孟加拉国使用南亚计数体系,数位分隔规则为从右往左首个分隔符位于第3位前,后续每2位添加一个分隔符,完全匹配你给出的格式需求。推荐优先使用系统原生区域配置实现,避免自定义逻辑出错。
方法1:系统原生区域适配(推荐)
直接使用孟加拉国(bn_BD)区域的NumberFormat,原生支持对应分隔规则,无需手动处理数位逻辑。
Kotlin 实现代码
import java.text.NumberFormat import java.util.Locale // 初始化孟加拉国区域格式实例 private val bangladeshLocale = Locale("bn", "BD") private val numberFormatter = NumberFormat.getNumberInstance(bangladeshLocale) // 如需展示货币符号「৳」,替换为 NumberFormat.getCurrencyInstance(bangladeshLocale) 即可 fun formatBangladeshNumber(num: Long): String { return numberFormatter.format(num) } // 测试输出 // formatBangladeshNumber(1000) → 1,000 // formatBangladeshNumber(10000) → 10,000 // formatBangladeshNumber(100000) → 1,00,000 // formatBangladeshNumber(1000000) → 10,00,000 // formatBangladeshNumber(100000000) → 10,00,00,000
Java 实现代码
import java.text.NumberFormat; import java.util.Locale; public class BdNumberFormatter { private static final Locale BANGLADESH_LOCALE = new Locale("bn", "BD"); private static final NumberFormat NUMBER_FORMATTER = NumberFormat.getNumberInstance(BANGLADESH_LOCALE); // 带货币符号用 NumberFormat.getCurrencyInstance(BANGLADESH_LOCALE) public static String formatNumber(long num) { return NUMBER_FORMATTER.format(num); } }
方法2:自定义DecimalFormat规则(适合无区域依赖场景)
如果不需要绑定系统区域,可直接使用自定义格式模板实现分隔:
import java.text.DecimalFormat private val customFormatter = DecimalFormat("#,##,###") // 测试:customFormatter.format(100000000) → 10,00,00,000
注意事项
- 格式化后的字符串如需转回数字,直接调用对应
Formatter的parse()方法即可,无需手动移除分隔符 - 若需要调整小数位展示,可调用
setMaximumFractionDigits()、setMinimumFractionDigits()方法配置格式实例
内容的提问来源于stack exchange,提问作者Hridoy Krisna Das
相关产品推荐
相关产品推荐

