你已經看到了所有這些工作,他們是非常直觀的。這些運營商返回布林值true或false(1),(0)。
記住,任何使用這些操作符比較浮點值是危險的。這是因為小的捨入誤差的浮點運算元可能會導致意外的結果。請參閱部分浮點數的更多細節。
然而,有時需要做的浮點數的比較是不可避免的。由於這些運營商往往是乙個錯誤的結果,通常只有輕微的後果。相等運算子更麻煩,因為小的捨入誤差使它幾乎沒用。因此,使用= =運算子對浮點數不建議。
因此,使用= =運算子對浮點數不建議。做浮點平等最常見的方法是使用乙個函式,計算這兩個值是如何彼此靠近。如果這兩個數字是";足夠接近";,然後我們叫他們平等的。如果這兩個數字是";足夠接近";,然後我們叫他們平等的。
唐納德,一位著名的計算機科學家,提出以下方法在他的書《計算機程式設計藝術,第2卷:半數值演算法(艾迪生衛斯理,1969)」:
bool isequal(double dx, double dy)
depsilon是乙個很小的值(如0 00000 1)是用來幫助定義什麼是「足夠接近」。fabs()是在標準庫函式(#包括< cmath >)返回絕對值的雙引數。
讓我們研究如何isequal()功能。在左邊的< =操作符,dx -絕對值dy告訴如何關閉dx和dy彼此為乙個正數。
它是最容易想到的depsilon百分比。乙個depsilon 0.01意味著dx和dy必須在為了彼此的1%被認為是相同的。在右側的< =操作符,我們乘depsilon工廠(dx)找出最大距離的兩個數字可以分開,仍被視為平等的。例如,如果工廠(dx)值為1000,和depsilon是0.01,最大距離的兩個數是10。
最後,我們之間的距離比較dx和dy的最大距離,他們仍然可以被認為是「足夠接近」。為depsilon值可以調整到什麼是最適合的程式。通常,程式設計師會使isequal() depsilon三分之一引數就可以在乙個**呼叫的基礎上定義的。
做的不平等(!做的不平等(!
=)而不是平等,簡單地呼叫該函式使用邏輯非運算元(!)翻轉效果:翻轉效果:
如果(!相等(dx,dy))
cout << dx <<」不等於「<< endl 《鏑;
邏輯運算 或,與,非
邏輯變數之間的運算稱為邏輯運算。二進位制數1和0在邏輯上可以代表 真 與 假 是 與 否 有 與 無 這種具有邏輯屬性的變數就稱為邏輯變數。計算機的邏輯運算的算術運算的主要區別是 邏輯運算是按位進行的,位與位之間不像加減運算那樣有進製或借位的聯絡。邏輯運算主要包括三種基本運算 邏輯加法 又稱 或 運...
PHP第二天 邏輯與 邏輯或 邏輯非
假設給定乙個整數表示乙個員工的年齡,如果該年齡為整十的數,或者年齡的平方除以100在10 20之間,則公司在當年年底會給該員工發特別獎。請寫出程式來判斷某個年齡的員工是否可以得獎。age 71 當age為20,30,就會發生短路 if age 10 0 age age 100 10 age age ...
雙邏輯非 操作符
雙邏輯非操作,會把乙個值 數字,字串 轉換為布林值。第一次邏輯非操作取反的布林,第二次獲得最初元素本身對應的布林。alert false false alert blue true alert 0 false alert nan false alert 12345 true雙邏輯非操作符提高了程式執...