首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numpy.linspace数表示

numpy.linspace数表示
EN

Stack Overflow用户
提问于 2019-02-26 11:58:26
回答 1查看 163关注 0票数 1

我试图使用linspace来等距闭间隔。我的代码如下所示:

代码语言:javascript
复制
for i in np.linspace(-1,2,6,endpoint=True):
    print(i)

它的输出如下:

代码语言:javascript
复制
-1.0
-0.4
0.19999999999999996
0.7999999999999998
1.4
2.0

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

我是对的还是完全误解了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-26 12:35:38

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

代码语言:javascript
复制
from decimal import Decimal
for i in np.linspace(-1,2,6,endpoint=True):
    print(Decimal(i))

产出:

代码语言:javascript
复制
-1
-0.40000000000000002220446049250313080847263336181640625
0.1999999999999999555910790149937383830547332763671875
0.79999999999999982236431605997495353221893310546875
1.399999999999999911182158029987476766109466552734375
2

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54885059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档