Java 如何将百分比字符串转换为BigDecimal?
在java中,如何将百分比字符串转换为BigDecimal 谢谢Java 如何将百分比字符串转换为BigDecimal?,java,Java,在java中,如何将百分比字符串转换为BigDecimal 谢谢 String percentage = "10%"; BigDecimal d ; // I want to get 0.1 只要您知道%符号将始终位于字符串的末尾: BigDecimal d = new BigDecimal(percentage.substring(0, percentage.length()-1)); d.divide(100); // '%' means 'per hundred', so divide
String percentage = "10%";
BigDecimal d ; // I want to get 0.1
只要您知道
%
符号将始终位于字符串的末尾
:
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));
尝试
新的十进制格式(“0.0#%”)。解析(百分比)
使用DecimalFormat的优点是可以避免脆弱的字符串操作,甚至可以根据您的区域设置(DecimalSeparator、GroupingSeparator、Minssign等)解析数字。
如果您不知道格式或不想硬编码,也可以使用
NumberFormat.getPercentInstance()
。在BigDecimal
类中没有divide(int)
。这似乎是重复的问题:在这里,Namal用一行方法提供答案,而不是再次分割。很好。请记住,这对像“10.5%”这样的东西不起作用。@RasmusFaber它将使DecimalFormat的内部计算遭受精度损失!新的十进制格式(“0.0%”)。解析(“0.9%”->0.009000000000000001
BigDecimal d = new BigDecimal(percentage.trim().replace("%", "")).divide(BigDecimal.valueOf(100));
DecimalFormat f = new DecimalFormat("0%");
f.setParseBigDecimal(true);// change to BigDecimal & avoid precision loss due to Double
BigDecimal d = (BigDecimal) f.parse("0.9%");