在python中将float乘以整数时出现数学错误

时间:2014-08-29 17:28:39

标签: python python-3.x

def CalculateExchange(currency2,rate):
    currencyamount1 = int(input("Enter the amount: "))
    currencyamount2 = (currencyamount1 * rate)
    print(currencyamount2,currency2)

当将在程序中较早获得的汇率乘以用户输入的数字时,而不是输出实际数字,它只输出以汇率形式输入的金额,例如,当汇率为5且输入金额为6时,它只输出6.6.6.6.6,我真的可以使用帮助,我知道这个问题可能看起来非常微不足道并且容易纠正但是我无法尝试对其进行排序进行。

3 个答案:

答案 0 :(得分:2)

解决这样一个错误的最简单方法是在乘法之前将你的int转换回浮点数

def CalculateExchange(currency2,rate):
    currencyamount1 = int(input("Enter the amount: "))
    currencyamount2 = (float(currencyamount1) * float(rate))
    print(currencyamount2,currency2)

答案 1 :(得分:1)

在Python 2下,函数input对输入字符串执行eval

Python 2.7.7 (default, Jun 14 2014, 23:12:13) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> x=input('Enter x: ')
Enter x: 2
>>> x
2
>>> type(x)
<type 'int'>
>>> x*5
10

浮动:

>>> x=input('Enter x: ')
Enter x: 2.2
>>> type(x)
<type 'float'>
>>> x*5
11.0

由于从应用程序中的用户那里获取任意代码被广泛认为是不明智的,因此在Python 3中更改了此行为。

在Python 3下,input始终返回一个字符串:

Python 3.4.1 (default, May 19 2014, 13:10:29) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> x=input('Enter x: ')
Enter x: 2.
>>> type(x)
<class 'str'>

这解释了你的结果:

>>> x*5
'2.2.2.2.2.'

如果你想安全在Python 3中有类似的功能,你可以将input包裹在ast.literal_eval的调用中:

>>> from ast import literal_eval
>>> x=literal_eval(input('Enter x: '))
Enter x: 2.2
>>> x
2.2
>>> type(x)
<class 'float'>

或者,只需使用int(x)float(x)

将用户输入转换为所需的数据类型

答案 2 :(得分:-3)

currencyamount2 = float(currencyamount1 * rate)