commons-issues mailing list archives

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


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

Attached patch files containing reproducing test case and proposed solution.

> Precision lost when converting BigDecimal
> -----------------------------------------
>                 Key: BEANUTILS-470
>                 URL:
>             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:

This message was sent by Atlassian JIRA

View raw message