python - 为什么结果应该是整数,却是循环数?

标签 python numpy

嗨,我正在为类编写一些代码,这是线性回归的代码。
您可以在代码中看到的数据,手动计算得出的值为 a=1.7 和 b=1.6。

我尝试将公式的不同部分分成不同的变量,但答案保持不变 (1.6999999999999993)。

import numpy as np  
x=np.array([2,3,5,6])  
y=np.array([4.5,7.2,9.2,11.5])  
b=(np.sum((y-np.mean(y))*x))/(np.sum((x-np.mean(x))*x))  
a=np.mean(y)-(b*(np.mean(x)))  
print(a)   
print(b)  

预期结果为 a=1.7 和 b=1.6,但输出为 a=1.6999999999999993。

最佳答案

这是因为你使用的是float数字,二进制 float 学是这样的。在大多数编程语言中,它基于 IEEE 754 standard .

参见Is floating point math broken?

关于python - 为什么结果应该是整数,却是循环数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56307591/

相关文章:

python - 如何在 BeautifulSoup 中返回标签的元素?

python - OpenERP fields.function() 解释

python - 嵌入 Python、在 Grand Central Dispatch 中使用非 Python 线程会导致 Py_Finalize 错误

python - 如何取消数据洗牌?

python:二维矩阵中更快的局部最大值

python - 创建三元组网格

python - 树莓派串口数据传输输入输出延迟

python - 在 'df.size()' 函数后操作新列?

python - 如何从 numpy.ndarray 中随机选择一些非零元素?

python - onehotencoder 的 sklearn 掩码不起作用