You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "dion gillard (JIRA)" <ji...@apache.org> on 2007/10/26 10:53:51 UTC

[jira] Updated: (JEXL-30) ASTAddNode does not add BigDecimal objects correctly

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

dion gillard updated JEXL-30:
-----------------------------

    Fix Version/s: 2.0

> ASTAddNode does not add BigDecimal objects correctly
> ----------------------------------------------------
>
>                 Key: JEXL-30
>                 URL: https://issues.apache.org/jira/browse/JEXL-30
>             Project: Commons JEXL
>          Issue Type: Bug
>    Affects Versions: 1.1
>         Environment: All
>            Reporter: Curtis Stanford
>             Fix For: 2.0
>
>
> The ASTAddNode only checks for Float or Double objects when adding floating point numbers. If the objects are not Float or Double, they are added as Long's. As a result, adding BigDecimal objects loses any existing decimal points.
> Untested patch:
> Index: ASTAddNode.java
> ===================================================================
> --- ASTAddNode.java     (revision 476204)
> +++ ASTAddNode.java     (working copy)
> @@ -16,6 +16,8 @@
>  
>  package org.apache.commons.jexl.parser;
>  
> +import java.math.BigDecimal;
> +
>  import org.apache.commons.jexl.JexlContext;
>  import org.apache.commons.jexl.util.Coercion;
>  
> @@ -71,8 +73,8 @@
>           *  if anything is float, double or string with ( "." | "E" | "e")
>           *  coerce all to doubles and do it
>           */
> -        if (left instanceof Float || left instanceof Double
> -            || right instanceof Float || right instanceof Double
> +        if (left instanceof Float || left instanceof Double || left instanceof BigDecimal
> +            || right instanceof Float || right instanceof Double || right instanceof BigDecimal
>              || (left instanceof String
>                    && (((String) left).indexOf(".") != -1 
>                            || ((String) left).indexOf("e") != -1

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.