[
https://issues.apache.org/jira/browse/LANG-381?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12547571
]
Henri Yandell commented on LANG-381:
------------------------------------
Looks like the min(double, double, double) (and probably others) have the same
problem. Interesting given that they use Math.min.
The bug on the max() methods is the inverse. They don't consider NaN to be >
than all others as Float.compareTo does.
> NumberUtils.min(floatArray) returns wrong value if floatArray[0] happens to
> be Float.NaN
> ----------------------------------------------------------------------------------------
>
> Key: LANG-381
> URL: https://issues.apache.org/jira/browse/LANG-381
> Project: Commons Lang
> Issue Type: Bug
> Affects Versions: 2.3
> Reporter: Thomas Vandahl
> Fix For: 2.4
>
>
> The min() method of NumberUtils returns the wrong result if the first value
> of the array happens to be Float.NaN. The following code snippet shows the
> behaviour:
> float a[] = new float[] {(float) 1.2, Float.NaN, (float) 3.7, (float)
> 27.0, (float) 42.0, Float.NaN};
> float b[] = new float[] {Float.NaN, (float) 1.2, Float.NaN, (float)
> 3.7, (float) 27.0, (float) 42.0, Float.NaN};
>
> float min = NumberUtils.min(a);
> System.out.println("min(a): " + min); // output: 1.2
> min = NumberUtils.min(b);
> System.out.println("min(b): " + min); // output: NaN
> This problem may exist for double-arrays as well.
> Proposal: Use Float.compare(float, float) or NumberUtils.compare(float,
> float) to achieve a consistent result.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.