我尝试将此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)。 有什么想法吗?
答案 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 ...
}
});