在java中,如何将百分比String转换为BigDecimal?
由于
String percentage = "10%";
BigDecimal d ; // I want to get 0.1
答案 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()
。