Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Unexpected result
#1
I'm teaching myself python and used the following tutorial:

https://www.pythoncentral.io/pythons-ran...explained/

>>> def frange(start, stop, step):
...     i = start
...     while i < stop:
...         yield i
...         i += step
...
>>> for f in frange(0.5,3.0,0.1):
...     print(f)
Instead of increments in 0.1 steps I get:

Output:
0.5 0.6 0.7 0.7999999999999999 0.8999999999999999 0.9999999999999999 1.0999999999999999 1.2 1.3 1.4000000000000001 1.5000000000000002 1.6000000000000003 1.7000000000000004 1.8000000000000005 1.9000000000000006 2.0000000000000004 2.1000000000000005 2.2000000000000006 2.3000000000000007 2.400000000000001 2.500000000000001 2.600000000000001 2.700000000000001 2.800000000000001 2.9000000000000012 >>>
I can't work out why some of the increments have values that aren't exactly .1 from the previous.
Is there some secret floa behaviour?

Thanks.
Reply
#2
The python float 0.1 is not exactly equal to the same mathematical number because computers store numbers in binary form and the real number 0.1 cannot be represented exactly in base 2 on 64 bits. This is not a limitation of python, it is a limitation of the widely adopted IEEE754 floating point format used by computers. The true value of 0.1 in your program is
>>> (0.1).as_integer_ratio()
(3602879701896397, 36028797018963968)
You can read this documentation page for more.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Unexpected result linton 4 1,936 May-02-2020, 01:15 PM
Last Post: linton
  list sum gives unexpected result Nesso 0 1,668 Feb-04-2020, 08:31 AM
Last Post: Nesso
  Unexpected (?) result with regular expressions guraknugen 2 2,161 Jan-18-2020, 02:33 PM
Last Post: guraknugen
  Unexpected expected type error result MartinMaker 1 2,017 Feb-16-2019, 05:02 PM
Last Post: micseydel
  unexpected sub result after overloading operator jolinchewjb 1 2,234 Jan-24-2019, 08:23 AM
Last Post: buran
  Unexpected result in simple prime number example jackhj 2 2,950 Apr-20-2018, 01:48 AM
Last Post: jackhj
  Reversing word in strings yields unexpected result Dec 4 3,597 May-17-2017, 05:32 PM
Last Post: wavic
  datetime unexpected result PickyBiker 10 8,957 Dec-27-2016, 10:47 PM
Last Post: PickyBiker

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020