commons-issues mailing list archives

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

             Summary: Precision lost when converting BigDecimal
                 Key: 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ä

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