我的问题是我有一个用户输入字段,这是一个文本字段,我必须将其转换为bigDecimal以便在数据库中使用。
2,50 --> 2,50
2.50 --> 2,50
2.5 --> 2,50
1200 --> 1200 (or 1200,00)
1.200 --> 1200 (or 1200,00)
1.200,50 --> 1200,50
1,200.50 --> 1200,50
有没有一种简单的方法可以转换所有这些输入?使用 valueOf 或 parseDouble 不能完成这项工作。我也尝试过DecimalFormatter,但是我找不到正确的格式。
答案 0 :(得分:2)
DecimalFormat
是可行的方法 - 为用户的区域设置获取相应的DecimalFormat
,并调用setParseBigDecimal(true)
以便它解析为BigDecimal
而不是double
}。
请注意,您确实需要知道正确的区域设置 - 否则“1,251”可能意味着“多于一个四分之一”或“整数1251”。不可否认,你可以尝试用可用的每种格式解析它,并猜测哪种格式是成功的格式,但这对我来说听起来不是一个好主意。