[Tutor] Some questions about my yen-USD.py
Luke Paireepinart
rabidpoobear at gmail.com
Mon Sep 18 15:56:36 CEST 2006
Dick Moores wrote:
> At 05:20 AM 9/18/2006, Kent Johnson wrote:
>
>
>> You have greatly underused Decimal - it is capable of multiplication and
>> division of fractional quantities directly:
>>
>> In [1]: from decimal import Decimal as D
>>
>> In [2]: x=D('1.23')
>>
>> In [3]: y=D('4.5')
>>
>> In [4]: x*y
>> Out[4]: Decimal("5.535")
>>
>> In [5]: x/y
>> Out[5]: Decimal("0.2733333333333333333333333333")
>>
>
> And sqrt() as well, which I definitely thought was not possible.
> <http://www.python.org/dev/doc/maint24/lib/node178.html>
>
> Well, you settled that. I don't know why I didn't see it.
>
Perhaps you had some preconceptions about the limits of the Decimal
module, and upon
preliminary investigations something confirmed this for you, so you
didn't actually look in-depth
for a way to do what you were trying to do because it seemed at first
glance like Decimal wasn't the right tool
(maybe you saw an example that didn't fully utilize Decimal or something.)
Or, alternatively, you cheated and skimmed over the docs, and didn't see
something important the first time around :)
>
>>> of course couldn't rely on the use of the built-in round() or the
>>> formatting of strings (see the line "format = "%." + str(precision) +
>>> 'f'" in setPrecision() in v3). Lack of experience with the slicing
>>> of lists caused many headaches. I didn't succeed in debugging until I
>>> put in print statements wherever a value changes, and trying many
>>> different integer strings and places (the arguments of
>>> roundNumber()). A good lesson, I think.
>>>
>> The recipes page in the docs for Decimal include a moneyfmt() function
>> that rounds to a specified number of places and inserts a separator char.
>>
>
> I'd seen the recipes in the docs, but couldn't make much sense out of
> them. I think I can now. Or at least more sense than before.
> <http://docs.python.org/lib/decimal-recipes.html>
>
Yes, even though a portion of your program has functionality in the
Decimal module already,
coding anything is good practice. For example, my dream is to one day
write a NES emulator in Python,
and this has already been done dozens of times in C, C++, Java, even
Visual Basic. I don't care, my goal is the same
whether or not I'm reinventing the wheel. :) I know of no NES emulator
in Python, though, so I guess i'm not really
reinventing the wheel after all (if anyone asks, tell them I'm porting
that Java emulator :)
> Thanks, Kent.
>
> Dick
>
>
Have a good day!
I have to get my butt to class now. 4 minutes! eek.
-Luke
More information about the Tutor
mailing list