# newbie: precision question

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Sat Mar 21 04:34:18 CET 2009

```On Sat, 21 Mar 2009 04:12:48 +0100, Lada Kugis wrote:

> I'm a newbie learning python, so forgive for, what may seem to some,
> like a stupid question.
>
> I understand the basic integer and fp type, but what I'm having a little
> trouble are the long type and infinite precision type.
>
> Also, when I do
>
>>>> math.pi - (math.sqrt(math.pi))**2.
>
> I get
>
>>>>4.4408920985006262e-016
>
> Please, could someone in just a few words, in newbie speak, explain why
> does that happen ? And what do the types actually mean ? What I mean,
> how can something have infinite precision but still not return zero as a
> result. (Btw, I always thought floating points had precision up to 8
> significant digits, doubles 16).

Floats in Python don't have infinite precision.

Ints (or longs) can have infinite precision. Try calculating (say)
1234567**315*24689 and you should get 1923 digits. By the way, you can do
calculations on ints with tens of thousands of digits *much* faster than
you can print those same ints: on my computer, calculating all 75199
digits of 1234567**12345 takes less than an eye-blink, while printing it
takes ages.

Floats, on the other hand, are effectively the same as double on the C