[
https://issues.apache.org/jira/browse/SPARK-2479?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Xiangrui Meng updated SPARK-2479:
---------------------------------
Assignee: DB Tsai
> Comparing floating-point numbers using relative error in UnitTests
> ------------------------------------------------------------------
>
> Key: SPARK-2479
> URL: https://issues.apache.org/jira/browse/SPARK-2479
> Project: Spark
> Issue Type: Improvement
> Reporter: DB Tsai
> Assignee: DB Tsai
>
> Floating point math is not exact, and most floating-point numbers end up
> being slightly imprecise due to rounding errors. Simple values like 0.1
> cannot be precisely represented using binary floating point numbers, and the
> limited precision of floating point numbers means that slight changes in the
> order of operations or the precision of intermediates can change the result.
> That means that comparing two floats to see if they are equal is usually not
> what we want. As long as this imprecision stays small, it can usually be
> ignored.
> See the following famous article for detail.
> http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
> For example:
> float a = 0.15 + 0.15
> float b = 0.1 + 0.2
> if(a == b) // can be false!
> if(a >= b) // can also be false!
--
This message was sent by Atlassian JIRA
(v6.2#6252)