找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2931|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

如何檢查實(shí)數(shù)值是相等的?【算法】

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:26188 發(fā)表于 2015-5-28 01:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
描述:

對(duì)實(shí)數(shù)進(jìn)行計(jì)算時(shí),由于實(shí)數(shù)的結(jié)構(gòu) (指數(shù)形式) 以及非常大的數(shù)值范圍,經(jīng)常會(huì)發(fā)生舍入誤差,因此兩個(gè)數(shù)值相等的情況 (所有位都相同) 幾乎不會(huì)出現(xiàn)。所以比較兩個(gè)實(shí)數(shù)是否“相等”通常難以獲得預(yù)期的結(jié)果。因此您必須采用其它的方法。其中一種方法是采用近似值的方法。本條目介紹了一種您可以據(jù)以判斷實(shí)數(shù)是否“相等”的近似值算法,還包含了一個(gè)應(yīng)用該近似值算法的實(shí)例。本條目還簡(jiǎn)要介紹了實(shí)數(shù)的格式。
比較實(shí)數(shù)值是否相等的近似值
此處所述的比較實(shí)數(shù)所用的近似值基于以下公式:
|(a -b)/(|a| + |b|)| < eps
該近似值可用語(yǔ)言表述如下:
當(dāng) a 和 b 之差與 a 和 b 的絕對(duì)值之和的比值的絕對(duì)值小于“eps”的值時(shí),2 個(gè)數(shù)值“a”和“b”即被視為相等。
其中需要考慮公式的下列屬性:
1. 如果實(shí)數(shù)“a”和“b”的值非常大,則即使它們相差比較大也被視為等值,此時(shí)必須根據(jù)系統(tǒng)的需求降低“eps”的值。
如果實(shí)數(shù)“a”和“b”的值非常小,則只有兩數(shù)值相差很小時(shí)才被視為等值。
注意事項(xiàng):
此處請(qǐng)注意在一個(gè)實(shí)數(shù)的尾數(shù)中,最多只能顯示 6 個(gè)連續(xù)的十六進(jìn)制數(shù)字。
例如
數(shù)值舉例 1
數(shù)值舉例 2
(|a| + |b|)
5
5000000
“eps”
10-6 [0.000001]
“a”和“b”可被視為相等時(shí)“a”和“b”的差值
0.00000499...
4.999...
表 01
2. 如果“a”和“b”兩值都為 0,則“a”和“b”的和也是 0。被 0 除是不允許的且會(huì)導(dǎo)致錯(cuò)誤結(jié)果。因此不能使用近似值比較兩個(gè)恰好都為 0 的實(shí)數(shù)“a”和“b”!
3. 如果兩個(gè)被比較的實(shí)數(shù)有一個(gè)是 0,那么也不使用這個(gè)公式計(jì)算近似值。近似值結(jié)果通常為 1。因此比較結(jié)果常常是“不相等”,除非“eps”被設(shè)定比 1 大。
注意事項(xiàng):
  • 如果已經(jīng)發(fā)生了被 0 除的操作,則 CPU 通過(guò)置位狀態(tài)位 OS、OV、A0 和 A1 來(lái)指示這一錯(cuò)誤。
  • 如果數(shù)學(xué)函數(shù)的結(jié)果為 0,則兩個(gè)狀態(tài)位 A0 和 A1 不置位。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表