You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Tommy Tynjä (JIRA)" <ji...@apache.org> on 2014/10/01 09:31:34 UTC

[jira] [Updated] (BEANUTILS-470) Precision lost when converting BigDecimal

     [ https://issues.apache.org/jira/browse/BEANUTILS-470?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tommy Tynjä updated BEANUTILS-470:
----------------------------------
    Attachment: TestCase_ExtendingBigDecimal.patch
                NumberConverter_BigDecimal_precision_loss_fix.patch

Attached patch files containing reproducing test case and proposed solution.

> Precision lost when converting BigDecimal
> -----------------------------------------
>
>                 Key: BEANUTILS-470
>                 URL: https://issues.apache.org/jira/browse/BEANUTILS-470
>             Project: Commons BeanUtils
>          Issue Type: Bug
>          Components: ConvertUtils & Converters
>    Affects Versions: 1.9.2
>         Environment: java version "1.7.0_51"
> Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
> Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode, sharing)
>            Reporter: Tommy Tynjä
>         Attachments: NumberConverter_BigDecimal_precision_loss_fix.patch, TestCase_ExtendingBigDecimal.patch
>
>
> When converting a domain specific object which extends BigDecimal to a regular java.math.BigDecimal, precision is lost at time of conversion. A BigDecimal of e.g. value 3200.11 will be converted to a BigDecimal with value 3200. This happens due to org.apache.commons.beanutils.converters.NumberConverter does a BigDecimal.valueOf(value.longValue()) at line 375 (in the current trunk). I've created a reproducing test case which demonstrates the behavior (please see attached patch file).
> Adding the following code to NumberConverter where targetType equals BigDecimal seems to fix this issue (and all project test cases pass):
> else if (value instanceof BigDecimal) { return targetType.cast(new BigDecimal(value.toString())); }
> Adding an attachment containing a patch for the propsed solution.
> Filing this bug after receiving feedback on user mailing list:
> http://mail-archives.apache.org/mod_mbox/commons-user/201409.mbox/raw/%3C542B059C.40901%40oliver-heger.de%3E/



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)