gpt4 book ai didi

Python 的数学计算很奇怪,为什么会这样?

转载 作者:行者123 更新时间:2023-12-04 03:44:24 25 4
gpt4 key购买 nike

今天无聊,就开始写一些几分钟的代码打发时间。不管怎样,我想看看 x 与 x 的幂和 x 本身之间的函数关系是什么,所以我编写了以下代码。

x = np.arange(1,21,1)
y = []
for i in x:
y.append(len(str(i**i)))
plt.plot(x,y,'b')

这看起来很简单,绝对不可能出错,对吧?确实没有错误,但是输出的图像是这样的。

Output image

这太奇怪了,所以我写了下面的代码来验证,print(len(str(20**20))) 但这是正常的,给了我的结果27

按理说这个函数的曲线应该一路飙升,但是在1620处问题严重。这是一个 Python 问题吗?为什么会这样?

最佳答案

好问题 - x 中值的数据类型是 np.int64。当你执行 16**16 时,你溢出了 64 位。 Python 的固有 int 数据类型没有这样的限制。因此,您应该在转换前将数据转换为 int:

y.append(len(str(int(i)**int(i))))

或者将 x 定义为一个 int 数组:

x = list(range(1, 21))

关于Python 的数学计算很奇怪,为什么会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65404442/

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