[Python-ideas] Python Float Update

Stephen J. Turnbull stephen at xemacs.org
Tue Jun 2 06:21:48 CEST 2015


Joonas Liik writes:

 > Having some sort of decimal literal would have some advantages of its own,
 > for one it could help against this sillyness:

 > I'm not saying that the actual data type needs to be a decimal (
 > might well be a float but say shove the string repr next to it so
 > it can be accessed when needed)

That *would* be a different type from float.  You may as well go all
the way to Decimal.

 > ..but this is one really common pitfall for new users,

To fix it, you really need to change the parser, i.e., make Decimal
the default type for non-integral numbers.  "Decimal('1.3')" isn't
that much harder to remember than "1.3$" (although it's quite a bit
more to type).  But people are going to continue writing things like

    pennies = 13
    pennies_per_dollar = 100
    dollars = pennies / pennies_per_dollar
    # Much later ...
    future_value = dollars * Decimal('1.07')

And in real applications you're going to be using Decimal in code like

    def inputDecimals(file):
        for row, line in enumerate(file):
            for col, value in enumerate(line.strip().split()):
                matrix[row][col] = Decimal(value)

or

    def what_if():
        principal = Decimal(input("Principal ($): "))
        rate = Decimal(input("Interest rate (%): "))
        print("Future value is ",
              principal * (1 + rate/100),
              ".", sep="")

and the whole issue evaporates.


More information about the Python-ideas mailing list