似乎没有其他方法,因为
java.Lang.Number没有返回
BigDecimal类型的方法。无论如何,这是有道理的,因为
BigDecimal仅接受格式正确的字符串,而不是
"2.105,88"like
"2105.88"。
让我展示您的代码:
import java.math.BigDecimal;import java.text.DecimalFormat;import java.text.NumberFormat;import java.text.ParseException;import java.util.Locale;public class JavaMain { public static void main(String[] args) { String numberString = "2.105,88"; //using casting try { DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(Locale.GERMAN); df.setParseBigDecimal(true); BigDecimal bd = (BigDecimal) df.parseObject(numberString); System.out.println(bd.toString()); } catch (ParseException e) { e.printStackTrace(); } //your way short version NumberFormat nf = NumberFormat.getInstance(Locale.GERMAN); try { BigDecimal bd1 = new BigDecimal(nf.parse(numberString).toString()); System.out.println(bd1.toString()); } catch (ParseException e) { e.printStackTrace(); } String numberStringFixed = "2105.88"; //direct string formated System.out.println(new BigDecimal(numberStringFixed));; //direct but erroneous way if the string is not formated System.out.println(new BigDecimal(numberString));; }}我希望这有帮助!



