我正在努力理解这段代码的模数部分
我试图只在模为0时打印num,也就是说它是偶数。 若我把数字设为100,速率设为1.5,我会得到结果。但是,如果我将rate值更改为.25.5.75以外的任何值,则不会返回任何结果
这里有一个例子:如果我使用100作为数字,1.4作为速率,我应该得到7.14.21等返回值,因为1.4平均地进入这些数字。但是,它不输出
最初的搜索告诉我模数对小数不起作用,但它对.5增量起作用
非常感谢您的任何意见
def findnum(number, rate):
for num in range(pinumber):
if num %(rate) == 0:
if num != 0:
print(num)
对浮点数的操作不精确。因此}之类的东西替换{},其中{}是一个小的正数(例如,{}),它在大多数情况下都应该可以工作。但是,这仍然会为某些值带来不正确的结果(例如{}和{}),因为Python可能高估了{}的值,然后{}将计算为接近
7 % 1.4
不会给出精确的0,而是一个接近0的数字。如果在代码中用{rate
而不是0。因此,更安全的解决方案是使用abs(num/rate - round(num/rate)) < tolerance
等条件由于python中的十进制精度,7%1.4不能精确地给出0
因此,一种方法是使用标准数学库中的“isclose”函数来补偿十进制精度
或者,您可以使用十进制库,它提供了更好的精度,但需要字符串转换
当使用十进制数时,总是存在精度误差的问题。这意味着
7 % 1.4
不是0
,而是4.440892098500626e-16
,要使代码正常工作,必须使用decimal
模块,该模块将数字存储为字符串相关问题 更多 >
编程相关推荐