如何将百分比字符串转换为BigDecimal?

时间:2012-03-15 02:45:10

标签: java

在java中,如何将百分比String转换为BigDecimal?

由于

String percentage = "10%";
BigDecimal d ; // I want to get 0.1 

4 个答案:

答案 0 :(得分:12)

尝试new DecimalFormat("0.0#%").parse(percentage)

答案 1 :(得分:5)

BigDecimal d = new BigDecimal(percentage.trim().replace("%", "")).divide(BigDecimal.valueOf(100));

答案 2 :(得分:1)

只要您知道%符号始终位于String的末尾:

BigDecimal d = new BigDecimal(percentage.substring(0, percentage.length()-1));
d.divide(100); // '%' means 'per hundred', so divide by 100

如果您不知道%符号将在那里:

percentage = percentage.replaceAll("%", ""); // Check for the '%' symbol and delete it.

BigDecimal d = new BigDecimal(percentage.substring(0, percentage.length()-1));
d.divide(new BigDecimal(100));

答案 3 :(得分:0)

    DecimalFormat f = new DecimalFormat("0%");
    f.setParseBigDecimal(true);// change to BigDecimal & avoid precision loss due to Double
    BigDecimal d = (BigDecimal) f.parse("0.9%");

使用 DecimalFormat 的优点是您可以避免脆弱的字符串操作,您甚至可以根据您的区域设置(DecimalSeparator、GroupingSeparator、minusSign 等)解析数字。 如果您不知道格式或不想对其进行硬编码,也可以使用 NumberFormat.getPercentInstance()