Until your code gets ported to a platform where float == double and it turns out the algo feeding your clever efficient comparison delivers slightly different values that previously collapsed into the same bucket. Relying on the particulars of an underlying representation requires deep knowledge of how those particulars are implemented (and I would happily agree with you that such knowledge is a requirement but more often than not when you come across a float comparison with equality you&#x27;re looking at a bug. That you&#x27;re the exception to the rule is fine with me, you seem to know what you&#x27;re doing so don&#x27;t take it personal).<p>The real problem is: most people don&#x27;t have deep knowledge of how those details are implemented and take &#x27;equality&#x27; for granted, especially if the visual representation of the numbers they are comparing tells them they should be equal which is not always the case.<p>The old adage goes: if you need floating point you don&#x27;t understand your problem :)<p>The comment that sparked this sub-thread is a nice illustration of what can and does go wrong.