[Tutor] python precision output?

Eric Brunson brunson at brunson.com
Thu Dec 6 23:21:35 CET 2007


Andre Walker-Loud wrote:
> Hi there,
>   

Hi Andre,

First of all, please don't start a new thread by replying to an existing 
thread, RFC compliant email readers will thread your post along with the 
original posting based on headers other than the Subject.  :-)

I don't think you'll ever get satisfactory precision using binary 
floating point (the default for python's float type).  Take a look at 
the decimal module, I believe it will give you much better results for 
your requirements.

Here is the module documentation:  
http://docs.python.org/lib/module-decimal.html

And an example of it's usage:

>>> getcontext().prec = 6
>>> Decimal(1) / Decimal(7)
Decimal("0.142857")
>>> getcontext().prec = 28
>>> Decimal(1) / Decimal(7)
Decimal("0.1428571428571428571428571429")


Please post back if that doesn't help you out.

Sincerely,
e.

> I am using python to do some scripting.  In particular, I am using it  
> to run some jobs which require precision inputs.  I do this by having  
> python write an input file, which I then feed to some other program.
>
> The problem I am having is getting python to write number into this  
> input file, keeping 16 digits of precision.  I have played around  
> interactively, and see that python default prints 17 digits of  
> precision to the screen, but when I use a replace command to write  
> into the input file, it only prints 12 digits of precision.  The  
> relevant snipit of my script is
>
> value = float( int(ai) * 6 * math.pi / (int(L)*int(T))
> replace = {'VALUE':str(value)}
> ini_file = open('generic_ini').read()
> f=open('my_input.xml','w')
> f.write(ini_file % replace)
> f.close()
>
> where, "ai", "L" and "T" are process dependent numbers defined in my  
> script, and the output "my_input.xml", is just an xml file I later  
> feed to another program, and this is why I replace 'VALUE' with a  
> string.
>
> To reiterate, I need str(value) to be written to my file with 16  
> digits of precision...???
>
>
> Thanks,
> Andre
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>   



More information about the Tutor mailing list