[ 
https://issues.apache.org/jira/browse/LANG-693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13495135#comment-13495135
 ] 

Thomas Neidhart commented on LANG-693:
--------------------------------------

Maybe I was unclear, but the float part afterwards would not be needed anymore, 
as this would never succeed.

Another idea would be to add something like this (pseudo-code)

{noformat}
//Must be a float,double,BigDec
boolean allZeros = isAllZeros(mant) && isAllZeros(exp);
try {
    Float f = createFloat(str);
    BigDecimal one = createBigDecimal(str);
    BigDecimal two = new BigDecimal(f);

    // check for loss of precision in the conversion
    if (one.compareTo(two) == 0) {
       ....

} catch (NumberFormatException nfe) { // NOPMD
    // ignore the bad number
}
{noformat}

Maybe the getPrecision() method from BigDecimal could be used too.
It is also a problem of definition, as a floating-point number can not always 
precisely expressed in the related data types, so the question is how to define 
when a float will be returned, and when a double.

That's why I put my original proposal to just assume a double in case of a 
missing type qualifier, as this is the default in java anyway.
                
> Method createNumber from NumberUtils doesn't work for floating point numbers 
> other than Float
> ---------------------------------------------------------------------------------------------
>
>                 Key: LANG-693
>                 URL: https://issues.apache.org/jira/browse/LANG-693
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.math.*
>    Affects Versions: 2.6
>            Reporter: Carlos Rego
>            Priority: Minor
>             Fix For: 3.x
>
>
> Method createNumber from NumberUtils is trying to parse a string with a 
> floating point number always first as a Float, that will cause that if we 
> send a string with a number that will need a Double or even a BigDecimal the 
> number will be truncate to accommodate into the Float without an exception to 
> be thrown, so in fact we will no be returning ever neither a Double nor a 
> BigDecimal.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to