On Mon, Dec 02, 2013 at 04:28:38PM +1000, Amit Saha wrote: > On Sun, Dec 1, 2013 at 7:26 PM, Steven D'Aprano <st...@pearwood.info> wrote:
> > Such floating point loops are tricky to get right, thanks to rounding of > > floats. Observe: > > > > py> x = 0.0 > > py> while x < 1.0: > > ... x += 0.1 > > ... > > py> x == 1.0 > > False > > py> x > > 1.0999999999999999 > > > > We expect that after the loop is done, x should equal 1, but it doesn't. > > That means that it actually loops one time too many. > > Indeed, that's a good point. Surprisingly, C does it just fine: That's because your example uses C singles, not doubles. If you do it again using doubles, I expect you'll see the same behaviour as Python (Python floats are implemented as C doubles under the hood). With singles, you'll have the same kind of error but with different values. Sometimes having less precision makes the errors cancel out, sometimes it doesn't. -- Steven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor