Python numpy arange

4
以下代码显示从12.01到16.01。但是它不应该只显示到16.00吗?
import numpy as np

for i in np.arange(12.01, (16.01), 0.01):
    print(float('{num:0.2f}'.format(num=i)))

一次性打印整个范围。 - Mazdak
2
以这种方式使用浮点数是不可靠的。 - llllllllll
尝试将12.01加上0.01 400次。由于浮点运算,它会给你略小于16.01的结果(在我的机器上是16.009999999999916)。另外也许可以参考一下这个问题 - jotasi
你也可以尝试:16.02-0.01 == 16.009999999999998 - jpp
如果需要使用小数,请使用decimal 模块 - jpp
1个回答

4

根据numpy.arange文档:

当使用非整数步长(例如0.1)时,结果通常不一致。对于这些情况最好使用linspace。

因此,在您的情况下,linspace可能更合适。

如果您想从12.01到16获得400个均匀间隔的数字:

np.linspace(12.01, 16, num=400)

1
那份文档正在变得更加简化 :) 结果并不是“不一致”的,它们确实是一致的,只是这种浮点数隐含应用的精度超出了普通人的认知范畴。 - Jongware

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接