[Tutor] Some questions about my yen-USD.py
rdm at rcblue.com
Mon Sep 18 16:28:04 CEST 2006
At 06:56 AM 9/18/2006, Luke Paireepinart wrote:
>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 : from decimal import Decimal as D
>>>In : x=D('1.23')
>>>In : y=D('4.5')
>>>In : x*y
>>>In : x/y
>>And sqrt() as well, which I definitely thought was not possible.
>>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 :)
A little of both, I think, but more of the former.
>>>>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.
>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 :)
I learned a lot in spending the time I did on roundNumber().
More information about the Tutor