[Python-Dev] Decimal data type issues (original) (raw)
Batista, Facundo FBatista at uniFON.com.ar
Wed Apr 14 17:51:08 EDT 2004
- Previous message: [Python-Dev] Decimal data type issues
- Next message: [Python-Dev] Decimal data type issues
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Tim Peters]
#- I expect everyone's initial reaction will be to say "no
#- limit", but think
#- two or three times about that. Eliminating any restriction
#- on exponent
#- magnitude is the same as saying overflow can never happen.
#- But overflow is
#- usually a valuable safety net in real life, telling you that
#- your algorithm
#- has gone insane. OTOH, there's nothing with physical
#- significance that
#- requires an exponent anywhere near as large as 999999999,
#- and REXX has used
#- that exponent limit for years without problems.
But it's still an artificial restriction. We have no-limit longs, should have limited Decimal?
And also implies more code and complexity in the module. But this is a side effect and not the primary concern in the decision.
#- (c) also specifies ways to spell special values, like NaNs #- and infinities. #- Does Decimal(string)? I don't believe the PEP covered that.
Yes, it does. I missed mention it and an example in the PEP. Already fixed.
#- In any case, from_string() should be subsumed by #- Decimal(string), perhaps #- with via an optional "use_context" flag argument.
You mean something like Decimal(string, use_context=True)? And when creating from long, for example? Remember that the spec says that the context affect the operations, not creations (with the exception of from_string).
#- It's quite arguable that str() should be exactly the standard's #- to_sci_string() (and for those who haven't read the spec, do #- before you #- complain about that -- no, you don't always get an exponent under #- to_sci_string()).
I'm lost here. Are you saying that str() should have the same behaviour that to_sci_string()?
#- > Hash behaviour #- > -------------- #- #- Decimals that happen to be exact integers must return the #- same hash codes as #- the hash codes of the ints or longs they're equal to. All #- bets are off wrt #- hash codes for non-integral Decimals (e.g., #- hash(Decimal('1.5')) may or may #- not be the same as hash(1.5)); promising more than that is simply #- impractical. #- #- BTW, hash(Decimal('1.0')) must be the same as #- hash(Decimal('1.00')) must be #- the same as hash(Decimal('0.001e3')) despite that they have different #- internal representations.
I agree completely with this behaviour.
. Facundo
- Previous message: [Python-Dev] Decimal data type issues
- Next message: [Python-Dev] Decimal data type issues
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]