Java,将字符串解析为bigdecimal问题

时间:2016-02-15 13:05:30

标签: java string parsing bigdecimal

我尝试将此String解析为bigdecimal,其中逗号由一个点替换。

String priceStr = "0,04";
DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(Locale.US);
df.setParseBigDecimal(true);
df.setParseIntegerOnly(false);
BigDecimal price = null;
try {
        price = (BigDecimal) df.parseObject(priceStr);
    } catch (ParseException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

但是我得到一个整数而不是一个bigdecimal值(price = 4)。 有什么想法吗?

3 个答案:

答案 0 :(得分:4)

0,04不是在美国语言环境中格式化的数字。

如果您期望从中解析的值为0.04,则需要使用另一个使用,作为小数分隔符的区域设置,例如Locale.FRANCE

答案 1 :(得分:1)

如果您想将非美国本地小数转换为美国本地小数,则必须进行两次转换,即

String priceStr = "0,04";
DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(Locale.GERMAN);
df.setParseBigDecimal(true);
df.setParseIntegerOnly(false);
BigDecimal price = null;
try {
    price = (BigDecimal) df.parseObject(priceStr);
} catch (ParseException e1) {
    e1.printStackTrace();
}
System.out.println(NumberFormat.getInstance(Locale.US).format(price));
  

我怎样才能检测出来自哪个语言环境?

您只需检查号码String是否包含.

DecimalFormat df = (priceStr.contains(".")) ? 
                      (DecimalFormat) NumberFormat.getInstance(Locale.US) :
                      (DecimalFormat) NumberFormat.getInstance(Locale.GERMAN);

答案 2 :(得分:0)

试试这个:

webix.ui({
   view:"filemanager",
   id:"files",
   templateIcon: function (obj, common) {
       return ...
   }
});