I was trying to "play around" with BeanUtils conversions and I find out a behaviour that I cannot really understand.
Here is a simple piece of code to better explain the issue:
--- code starts here ---
import org.apache.commons.beanutils.locale.converters.*;
public class Test {
public static void main(String[] args) {
String[][] testValues = new String[2][2];
testValues[0][0] = "1.234,000";
testValues[0][1] = "#,##0.000";
testValues[1][0] = "1.234,001";
testValues[1][1] = "#,##0.000";BigDecimalLocaleConverter converter = new BigDecimalLocaleConverter();
for (int i=0; i<testValues.length; i++) {
Object obj = converter.convert(testValues[i][0], testValues[i][1]);
System.out.print("Value = " + obj.toString());
System.out.print(" [" + obj.getClass().getName() + "]");
System.out.print(" (" + testValues[i][0]);
System.out.println(" - " + testValues[i][1] + ")");
}
}
}
--- code ends here ---
By running this piece of code I obtain this:
Value = 1234 [java.lang.Long] (1234,00000000000 - #,##0.00000000000)
Value = 1234.00000000001 [java.lang.Double] (1234,00000000001 - #,##0.00000000000)
What I do consider strange is that the returning object is not a BigDecimal, but a Long or a Double.
Is this the correct behaviour? If not, should I (or someone here) report this as a Bug?
And, most important, what is the correct way to convert a string that follows the #,##0.00000000000 to a BigDecimal (always a big decimal, even if the original number has no decimals)?
Best regards, Kazuma
---
Those who don't understand unix are condemned to reinvent it. Poorly. (H.Spencer)
Alex 'Kazuma' Garbagnati - Milan, Italy - [EMAIL PROTECTED]
EJB & Tomcat jGuru FAQ Manager, http://www.jguru.com
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
