如何在Python中乘以小数

时间:2015-02-15 01:25:30

标签: python decimal

我正在写一个磅到美元的转换器程序。我遇到了一些问题乘以这两个数字。

pounds = input('Number of Pounds: ')
convert = pounds * .56
print('Your amount of British pounds in US dollars is: $', convert)

有谁能告诉我纠正这个程序的代码?

2 个答案:

答案 0 :(得分:10)

在Python 3 input中将返回一个字符串。这基本上等同于Python 2中的raw_input。因此,您需要在执行任何计算之前将该字符串转换为数字。并准备好"糟糕的输入" (即:非数字值)。

此外,对于货币价值,通常使用浮点数是个好主意。您应该使用decimal来避免舍入错误:

>>> 100*.56
56.00000000000001
>>> Decimal('100')*Decimal('.56')
Decimal('56.00')

所有这些都会导致那样:

import decimal

try:
    pounds = decimal.Decimal(input('Number of Pounds: '))
    convert = pounds * decimal.Decimal('.56')
    print('Your amount of British pounds in US dollars is: $', convert)
except decimal.InvalidOperation:
    print("Invalid input")

产:

sh$ python3 m.py
Number of Pounds: 100
Your amount of British pounds in US dollars is: $ 56.00

sh$ python3 m.py
Number of Pounds: douze
Invalid input

答案 1 :(得分:1)

def main():
    pounds = float(input('Number of Pounds: '))
    convert = pounds * .56
    print('Your amount of British pounds in US dollars is: $', convert) 

main()

如果您正在使用输入,则表示您正在输入字符串。您想为此问题输入浮点数。