[Python-Dev] Decimal data type issues (original) (raw)

Batista, Facundo FBatista at uniFON.com.ar
Fri Apr 16 08:48:34 EDT 2004


[Ka-Ping Yee]

#- My understanding of the reason for disallowing a float #- argument to the #- Decimal constructor is that people may be confused by exact #- conversion: #- they don't realize that the exact value may be slightly different #- from the decimal number they entered. #- #- My point is that since exact conversion is the confusing case, that's #- what the special method should be for.

I think is deeper than that. For example, I don't understand what is "exact conversion" to you:

1.1 -> "1.1" 1.1 -> "1.1000000000000001" 1.1 -> "1.100000000000000088817841970012523233890533447265625"

So, what is the expectation that floating point newbies will understand this safely enough as to let them create from:

Decimal(float, extra_argument) Decimal.exact_float()

To me, is complicate the things to much for the newcomer. I think the following reasoning is simpler:

Do you want to create from string? Strings are exact, use Decimal(string) Do you want to create from int/long? Ints and longs are exact, use Decimal(int/long) Do you want to create from float? Oops, floats are NOT exact, so you have to use Decimal.from_float(float), but take note of this, this and this.

. Facundo



More information about the Python-Dev mailing list