# [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.
```