精度误差

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

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

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

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

1
2
if (!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.24或137.25的强度)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值