Jerry Hill <[EMAIL PROTECTED]> wrote: > On Thu, May 22, 2008 at 12:32 PM, Dutton, Sam <[EMAIL PROTECTED]> wrote: > > I've noticed that the value of math.pi -- just entering it at the > > interactive prompt -- is returned as 3.1415926535897931, whereas (as every > > pi-obsessive knows) the value is 3.1415926535897932... (Note the 2 at the > > end.) > > > > Is this a precision issue, or from the underlying C, or something else? How > > is math.pi calculated? > > I believe this is an issue with the precision of IEEE floating point > numbers[1]. Those are the types of numbers used by the hardware > floating point processor on your CPU. I'm not an expert, by any > stretch of the imagination, but I believe you have two choices to > represent pi as an IEEE double precision float: > > 3.1415926535897931 (stored as 0x400921FB54442D18) or > 3.1415926535897936 (stored as 0x400921FB54442D19)
Just in case you were wondering how you get those hex numbers (like I was!) >>> import math >>> import struct >>> struct.pack(">d", math.pi).encode("hex") '400921fb54442d18' >>> struct.unpack(">d", "400921FB54442D18".decode("hex")) (3.1415926535897931,) >>> struct.unpack(">d", "400921FB54442D19".decode("hex")) (3.1415926535897936,) >>> -- Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list