commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tommy Tynjä (JIRA) <j...@apache.org>
Subject [jira] [Updated] (BEANUTILS-470) Precision lost when converting BigDecimal
Date Wed, 01 Oct 2014 07:31:34 GMT

     [ 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)

Mime
View raw message