force non-exponential representation for Decimal?

Mark Dickinson dickinsm at gmail.com
Wed Dec 23 05:16:27 EST 2009


On Dec 23, 10:03 am, jh... at gmx.de wrote:
> (cc-ing the list)

Thanks.  Looks like I'm still having trouble distinguishing between
'Reply' and 'Reply to author'.  I'll have to work on my reading
abilities over the break...

> > > Is there a convenient way to force a decimal.Decimal representation to
> > not use exponential representation?
>
> > Which Python version are you using?  For Python 2.6 (and 3.1), the
> > answer's yes.  For earlier Python verions, I don't think so.  In
> > Python 2.6, use new-style formatting with the 'f' modifier:
>
> > >>> '{0:f}'.format(Decimal('1e-100'))
> > '0.000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000001'
> > >>> '{0:f}'.format(Decimal('1e100'))
> > '10000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000'
>
> Unfortunately, I'm still using Python 2.4 so I can't go that way (at least not anytime soon, this is a production environment).

Hmm.  The recipe you cite is probably the easiest option, then.

I can't help wondering what you're doing with numbers that small.
2.34e-19 looks an awful lot like 0 for many practical purposes...

--
Mark



More information about the Python-list mailing list