in src/main/java/com/univocity/parsers/conversions/NumericConversion.java [165:201]
protected T fromString(String input) {
for (int i = 0; i < formatters.length; i++) {
position.setIndex(0);
T out = (T) formatters[i].parse(input, position);
if (formatters.length == 1 || position.getIndex() == input.length()) {
if (out == null || numberType == Number.class) {
return out;
} else if (numberType == Double.class) {
return (T) Double.valueOf(out.doubleValue());
} else if (numberType == Float.class) {
return (T) Float.valueOf(out.floatValue());
} else if (numberType == BigDecimal.class) {
if (out instanceof BigDecimal) {
return out;
}
return (T) new BigDecimal(String.valueOf(out));
} else if (numberType == BigInteger.class) {
if (out instanceof BigInteger) {
return out;
}
return (T) BigInteger.valueOf(out.longValue());
} else if (numberType == Long.class) {
return (T) Long.valueOf(out.longValue());
} else if (numberType == Integer.class) {
return (T) Integer.valueOf(out.intValue());
} else if (numberType == Short.class) {
return (T) Short.valueOf(out.shortValue());
} else if (numberType == Byte.class) {
return (T) Byte.valueOf(out.byteValue());
}
return out;
}
}
DataProcessingException exception = new DataProcessingException("Cannot parse '{value}' as a valid number. Supported formats are: " + Arrays.toString(formats));
exception.setValue(input);
throw exception;
}