精度误差

来源:互联网 发布:软件v模型 编辑:程序博客网 时间:2024/04/30 17:07

它是最容易想到的depsilon百分比。一个depsilon 0.01意味着dx和dy必须在为了彼此的1%被认为是相同的。在右侧的< =操作符,我们乘depsilon工厂(DX)找出最大距离的两个数字可以分开,仍被视为平等的。例如如果工厂DX)值为1000depsilon是0.01最大距离的两个数是10

最后,我们之间的距离比较dx和dy的最大距离,他们仍然可以被认为是“足够接近”。如果他们足够接近,该函数将返回True。否则则返回false

为depsilon值可以调整到什么是最适合的程序。通常,程序员会使isequal() depsilon三分之一参数就可以一个电话呼叫的基础上定义的

做的不平等=)而不是平等,简单地调用该函数使用逻辑非算子(!)翻转效果

12if (!IsEqual(dX, dY))    cout << dX << " is not equal to " << dY << endl;

一个浮不精确到7位小数。浮精确到大约7位有效数字。一个重要的数字任意数字不是一个占位符0包括小数点左边

例如,。0095有两个占位符零点,所以只有2位数。34.90有4个重要人物

有两种类型的我们需要警惕的浮点值的误差舍入误差精度误差

舍入误差可以任意长度的数字发生,因为一些数字的二进制有无限的表示(例如0.1),并表示将被截断。舍入误差通常会使你的答案错了0.000001一些小的数目一样

第二和更严重的潜在误差精度误差,在那里你的号码无法储存因为浮点数表示没有足够的内存。精度误差更加严重,因为他们可以舍入误差更大程度大小影响你的回答

0.0095×36.75 = 0.349125,这是6个重要的人物,因此在这种情况下,你可能会在精度方面是好的。因此你的回答将只能通过小的舍入误差的影响

但是,考虑一个例子:0.0095×36.7513。虽然36.7513是小数点后4位,有6位有效数字。当乘以0.0095,答案是0.34913735。浮子将截断为0.349137

一旦你进入更大的金额,甚至不适合浮。考虑到100264.75美元。这是一个8位数号码,即使它只使用2位小数。已经一个浮动是不会持有这个号码。做数学作业这将漂移远离你想回答

总之,如果精度是非常重要的,使用双。只使用漂浮在精度不重要(如在游戏不管你的性格有137.24137.25的强度)


0 0
原创粉丝点击