I am trying again(!) to learn enough Python to be able to process a bunch of files, and have run into something I don't understand right at the beginning. I am using Python 2.5 IDLE on a WindowsXP machine, and going through examples given in a Python tutorial. My understanding is that the built-in round function is written round(variable, n) where variable is the number to be rounded and n is the desired number of digits after the decimal point. I get the following:

``````>>> x = -2.3
>>> x
-2.2999999999999998
>>> round (x, 2)
-2.2999999999999998
>>> round (x)
-2.0
>>> round (x, 1)
-2.2999999999999998``````

Does anyone have any ideas?

Thank you!

It's working, n isn't the amount of decimal points its the number being divided.
round(2.5, 5)
output = 2.5
round(2.8, 5)
output = 2.7999999999999998

Oooooooh! So I misread the function description ...

Thank you very much!

round( x[, n])

Return the floating point value x rounded to n digits after the decimal point. If n is omitted, it defaults to zero. The result is a floating point number. Values are rounded to the closest multiple of 10 to the power minus n; if two multiples are equally close, rounding is done away from 0 (so. for example, round(0.5) is 1.0 and round(-0.5) is -1.0).

Oops - maybe I responded too quickly. I just looked up the documentation again on built-in functions and found the above; so I think that my reading is the one intended here.

Mathematically, `round(x, n)` is the number of the form `integer * (10**(-n))` which is closest to x. For example round(2.12345678, 3) is 2.123. Python prints 2.1230000000000002 because it uses a binary representation internally and 2.123 has an infinite number of binary digits, but it means 2.123. For example if I compute `1000 * round(2.12345678, 3) - 2123` , it prints 0.0