gpt4 book ai didi

python - numpy.linspace 数字表示

转载 作者:太空宇宙 更新时间:2023-11-03 21:13:31 26 4
gpt4 key购买 nike

我正在尝试使用linspace等间隔闭区间。我的代码如下:

for i in np.linspace(-1,2,6,endpoint=True):
print(i)

其输出如下:

-1.0
-0.4
0.19999999999999996
0.7999999999999998
1.4
2.0

我的问题是为什么 linspace 会回馈 0.199999999999999960.7999999999999998排在第三和第四位。据我了解,linspace 会用有理数增加起始值,因此它可以精确地表示所有值。

我是对的还是我完全误解了某些事情?

最佳答案

人们每天使用的浮点值几乎没有一个是真正精确的。这就是float 的本质。然而,大多数时候它们非常接近我们实际认为的值,我们甚至没有注意到,因为 python 在打印之前对数字进行四舍五入。您可以使用 decimal模块来查看(至少更精确)“真实”值:

from decimal import Decimal
for i in np.linspace(-1,2,6,endpoint=True):
print(Decimal(i))

输出:

-1
-0.40000000000000002220446049250313080847263336181640625
0.1999999999999999555910790149937383830547332763671875
0.79999999999999982236431605997495353221893310546875
1.399999999999999911182158029987476766109466552734375
2

正如你所看到的,除了第一个和最后一个值之外,它们都不精确。您注意到的两个值恰好有点不准确。

关于python - numpy.linspace 数字表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54885059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com