Python 计算皮尔逊 负数求根的运算问题

2018-05-03 15:51:15 +08:00
 luoerxiansheng
print (738.0-pow(340.0,2)/len(v1)),(3782.6436028-pow(1634.18064594,2)/len(v1))

print sum1sq, sum1, sum2sq, sum2

print '='*30

print sum2sq

print pow(sum2, 2) / 706

print sum2sq - pow(sum2, 2) / 706

print '=' * 30

下面是执行的结果


574.260623229 1.68902261066e-08

738.0 340.0 3782.6436028 1634.18064594

==============================

3782.6436028

3782.6436028

-7.32143234927e-11

==============================


上面的代码一一对应 我不明白

为什么会变成负数 而我写固定的数能计算正确 有没有大佬解惑 谢谢啦
1974 次点击
所在节点    Python
6 条回复
msg7086
2018-05-04 05:09:11 +08:00
不太懂你说的东西,不过我看到

3782.6436028
3782.6436028

这两个是一样的?什么东西变成了负数?
mulog
2018-05-04 07:44:36 +08:00
目测浮点数精度问题 有精度要求改用 Decimal
luoerxiansheng
2018-05-04 14:43:33 +08:00
应该是浮点数精度问题
luoerxiansheng
2018-05-04 14:45:16 +08:00
@msg7086 就是两个相同的数最后进行减法计算 得出负数
msg7086
2018-05-04 22:55:36 +08:00
@luoerxiansheng 数值运算误差。
msg7086
2018-05-04 22:56:00 +08:00
首先这两个数并不相同。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/451781

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX