Dear Python-User,
today i create some slides about floating point arithmetic. I used an example from http://docs.python.org/tutorial/floatingpoint.html so i start the python shell on my linux machine: d...@maxwell $ python Python 2.6.5 (release26-maint, May 25 2010, 12:37:06) [GCC 4.3.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>> sum = 0.0 >>> >>> for i in range(10): ... sum += 0.1 ... >>> >>> sum 0.99999999999999989 >>> >>> But thats looks a little bit wrong for me ... i must be a number greater then 1.0 because 0.1 = 0.100000000000000005551115123125782702118158340454101562500000000000 in python ... if i print it. So i create an example program: sum = 0.0 n = 10 d = 1.0 / n print "%.60f" % ( d ) for i in range(n): print "%.60f" % ( sum ) sum += d print sum print "%.60f" % ( sum ) -------- RESULTs ------ 0.100000000000000005551115123125782702118158340454101562500000 0.000000000000000000000000000000000000000000000000000000000000 0.100000000000000005551115123125782702118158340454101562500000 0.200000000000000011102230246251565404236316680908203125000000 0.300000000000000044408920985006261616945266723632812500000000 0.400000000000000022204460492503130808472633361816406250000000 0.500000000000000000000000000000000000000000000000000000000000 0.599999999999999977795539507496869191527366638183593750000000 0.699999999999999955591079014993738383054733276367187500000000 0.799999999999999933386618522490607574582099914550781250000000 0.899999999999999911182158029987476766109466552734375000000000 1.0 0.999999999999999888977697537484345957636833190917968750000000 and the jump from 0.50000000000000*** to 0.59999999* looks wrong for me ... do i a mistake or is there something wrong in the representation of the floating points in python? my next question, why could i run print "%.66f" % ( sum ) but not print "%.67f" % ( sum ) can anybody tell me how python internal represent a float number?? Best and many thanks in advanced, David -- http://mail.python.org/mailman/listinfo/python-list