【发布时间】:2013-12-22 14:47:20
【问题描述】:
在我的 Android 应用程序中,我有一个 EditText,我从中获取一个数字,并将其转换为 BigDecimal,然后从那里转换为本地货币格式:
String s = "100000";
Locale dutch = new Locale("nl", "NL");
NumberFormat numberFormatDutch = NumberFormat.getCurrencyInstance(dutch);
Log.e(this, "Currency Format: "+ numberFormatDutch.format(new BigDecimal(s.toString())));
这会像预期的那样打印出 100.000,00 欧元。但是,我现在想将其转换回 BigDecimal。
有没有办法可以将本地格式化的货币字符串转换回 BigDecimal?
【问题讨论】:
-
当你有
s这是数字的基本表示时,你为什么要这样做? -
您可以使用正则表达式从字符串中去除所有非数字字符,例如str = str.replaceAll( "[^\\d]", "" ) 这并不能直接回答您的问题,因此这只是您可以采取的方法的建议。
-
@NigelK - 不幸的是,这没有考虑到在欧洲大陆(包括荷兰)我们使用逗号作为小数点,而大多数英语国家使用点作为小数点。由于这个原因,这已经失败了。
-
你试过使用 numberFormatDutch.parse(myString, new ParsePosition(0));
标签: java android locale number-formatting