Hi Hernan, This is the new Behavior of Float comparison and it is desired. 1) 1.3 is represented in machine as (1.3 significandAsInteger printStringRadix: 2) , '.0e' , (1.3 exponent - Float precision + 1) printString. -> '2r10100110011001100110011001100110011001100110011001101.0e-52'
Or if you prefer: (1.3 asTrueFraction numerator printStringBase: 2) , '/' , (1.3 asTrueFraction denominator printStringBase: 2). -> '10100110011001100110011001100110011001100110011001101/10000000000000000000000000000000000000000000000000000' As you can see, this is quite different from 13/10. However, you can test (13/10) asFloat = 1.3 and that happens to be true, but that won't always be true. 2) comparing Float with strict equality is a dangerous game. Floating point operation are inherently inexact and thus asserting an exact equality is considered a bad practice. 3) basing comparisons and equality tests on inexact arithmetic rather than on exact arithmetic leads to weird behaviours. See http://bugs.squeak.org/view.php?id=3374 So i do not consider this fragment of code alone as a bug but as a feature. There might be some code depending on the old behaviour that can eventually break. If you have such an example in true application, I'm interested. I think we'd better fix such code to not rely on exact equality... Cheers. Nicolas 2009/7/7 Hernan Wilkinson <[email protected]>: > I added this new issue that happens on the latest image. > I'm posting it here because I think it is an important bug because it > affects the number model. > The problem is related with all fractions who's denominator is not power of > two. (130/100 = 1.3 or 1/5 = 0.2, etc) > (See > > Float>>adaptToFraction: rcvr andCompare: selector where it does > .... > "Try to avoid asTrueFraction because it can cost" > selector == #= ifTrue: [ > rcvr denominator isPowerOfTwo ifFalse: [^false]]. > > ...) > > > Hernan. > > > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
