Sometimes I hate Python. Here's the difference between Perl and Python: Perl accepts, even embraces the fact that language is messy. Python sometimes gets this wrong.
Here are some samples of dealing with formatting numbers:
from decimal import DecimalHuzzah, it does the right thing!
>>> f= Decimal('1200.1')
>>> "%s"%f.normalize()
'1200.1'
Doh! But clearly, removing the normalize() will fix things, right?
>>> f= Decimal('1200')
>>> "%s"%f.normalize()
'1.2E+3'
>>> "%s"%fYee-haw! Now we're cooking!
'1200'
>>> f= Decimal('1200.100')Hm, users don't want the trailing zeroes. The only thing that I can think to do is use a regular expression, and now I have two problems.
>>> "%s"%f
'1200.100'
But wait! If the number doesn't have anything after the decimal, then we do one, and if it does, we do the other!
def dec_string(dec):And that seems to be working. Note that the final version uses "%d"%dec, rather than %s, since we want to make sure and truncate past the decimal.
if dec:
if dec.normalize().as_tuple().exponent > 0:
return "%d"%dec
else:
return "%s"%dec.normalize()
else:
return 0
Update: check out my post about integrating it with Django forms to make it seamless.
No comments:
Post a Comment