比方说,我们已经声明了以下变量在C++中进行数学运算时,浮点错误是如何传播的?
float a = 1.2291;
float b = 3.99;
float
变量具有精度6,这(如果我理解正确)表示数之间的差异,计算机实际存储并且你想要的实际数量将小于10^-6
这意味着a
和b
都有一些误差小于10^-6
所以电脑a
里面实际上可能1.229100000012123
和b
可能是3.9900000191919
现在让我们假设你有下面的代码
float c = 0;
for(int i = 0; i < 1000; i++)
c += a + b;
我的问题是,
将c
的最终结果的精度误差小于10^-6
作为w还是不是?
如果答案是否定的,我们如何才能真正知道这个精度错误,以及如果您应用任何类型的操作(如您希望的次数和顺序),究竟发生了什么?
阅读它,它会回答你所有的问题和更多:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – avakar 2014-09-06 21:07:00
该文章似乎翔实,我会研究它,因为浮动点错误让我很头痛,谢谢! – ksm001 2014-09-06 21:14:11
您对精度的定义不正确。六位十进制数字的精度意味着该数字将精确到许多数字,而不会超过其数量级别。 – EJP 2014-09-06 21:31:44