Python 除零误差

Python 除零误差,python,floating-point,decimal,division,Python,Floating Point,Decimal,Division,我对教授提出的这个问题有意见。问题是: 编写一个函数的定义,该函数输入两个参数。第一个是一个人在特定时间间隔内键入的字数(大于或等于零的整数)。第二个是以秒为单位的时间间隔长度(大于零的整数)。该函数返回此人的打字速度,单位为每分钟字数(浮点) 这是我的密码: def typing_speed(num_words,time_interval): if(num_words >= 0 and time_interval > 0): factor = float(6

我对教授提出的这个问题有意见。问题是:

编写一个函数的定义,该函数输入两个参数。第一个是一个人在特定时间间隔内键入的字数(大于或等于零的整数)。第二个是以秒为单位的时间间隔长度(大于零的整数)。该函数返回此人的打字速度,单位为每分钟字数(浮点)

这是我的密码:

def typing_speed(num_words,time_interval):
    if(num_words >= 0 and time_interval > 0):
        factor = float(60 / time_interval)
        print factor
        return float(num_words/(factor))
我知道“因子”被指定为0,因为它没有被正确地四舍五入或其他什么。我不知道如何正确处理这些小数。显然我什么都没做


非常感谢您的帮助。

当您对除法结果调用
float
时,除法被视为整数除法(注意:我假设这是Python 2)。它没有帮助,帮助的是最初将除法指定为浮点除法,例如说
60.0
(60的浮点版本):

另一种方法是将60除以浮动(时间间隔)

请注意此示例交互:

In [7]: x = 31

In [8]: 60 / x
Out[8]: 1

In [9]: 60.0 / x
Out[9]: 1.935483870967742

Sharth的意思是:
来自未来的导入python

例如:

>>> from __future__ import division
>>> 4/3
1.3333333333333333
>>>

对“来自未来进口部门”的评论也可能有所帮助。如果
sixty
是一个已声明的整数变量而不是一个文本,则使用
factor=float(sixty)/time\u interval
>>> from __future__ import division
>>> 4/3
1.3333333333333333
>>>