BigDecimalConverter improvement
-------------------------------
Key: WICKET-2878
URL: https://issues.apache.org/jira/browse/WICKET-2878
Project: Wicket
Issue Type: Improvement
Components: wicket
Affects Versions: 1.4.8
Reporter: Pedro Santos
I was having problems comparing values returned by the user input into some
form fields of type BigDecimal. Looking for the problem, I notes that the
BigDecimalConverter was passing double values as parameter to BigDecimal
constructor. According with its doc:
"he results of this constructor can be somewhat unpredictable. One might assume
that writing new BigDecimal(0.1) in Java creates a BigDecimal which is exactly
equal to 0.1 (an unscaled value of 1, with a scale of 1), but it is actually
equal to 0.1000000000000000055511151231257827021181583404541015625. This is
because 0.1 cannot be represented exactly as a double (or, for that matter, as
a binary fraction of any finite length). Thus, the value that is being passed
in to the constructor is not exactly equal to 0.1, appearances notwithstanding.
"
"The String constructor, on the other hand, is perfectly predictable: writing
new BigDecimal("0.1") creates a BigDecimal which is exactly equal to 0.1, as
one would expect. Therefore, it is generally recommended that the String
constructor be used in preference to this one. "
Can BigDecimalConverter use the valueOf method of the BigDecimal API or String
constructor to create those objects from double values? IMO giving preference
to those options we are improving the converter, since the value will to be
predictable
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.