in src/main/java/org/apache/commons/validator/routines/PercentValidator.java [97:125]
protected Object parse(final String value, final Format formatter) {
// Initial parse of the value
BigDecimal parsedValue = (BigDecimal) super.parse(value, formatter);
if (parsedValue != null || !(formatter instanceof DecimalFormat)) {
return parsedValue;
}
// Re-parse using a pattern without the percent symbol
final DecimalFormat decimalFormat = (DecimalFormat) formatter;
final String pattern = decimalFormat.toPattern();
if (pattern.indexOf(PERCENT_SYMBOL) >= 0) {
final StringBuilder buffer = new StringBuilder(pattern.length());
for (int i = 0; i < pattern.length(); i++) {
if (pattern.charAt(i) != PERCENT_SYMBOL) {
buffer.append(pattern.charAt(i));
}
}
decimalFormat.applyPattern(buffer.toString());
parsedValue = (BigDecimal) super.parse(value, decimalFormat);
// If parsed OK, divide by 100 to get percent
if (parsedValue != null) {
parsedValue = parsedValue.multiply(POINT_ZERO_ONE);
}
}
return parsedValue;
}