浮點數比較

2021-06-22 11:02:21 字數 1449 閱讀 5376

部分**思路來自網路。fxxki整理發布。

double變數以帶符號的 ieee 64 位(8 個位元組)雙精度浮點數形式儲存 ,

它可以表示十進位制的15或16位有效數字.

負值取值範圍為 -1.79769313486231570e+308 到 -4.94065645841246544e-324,

正值取值範圍為  4.94065645841246544e-324   到  1.79769313486231570e+308。

一:兩個浮點數是否相等:

1.  與c++標準模板庫的誤差相比:

將兩個浮點數想減,所得的值的絕對值若小於誤差,浮點數相等。

2.自定義乙個超級小數:

const double eps = 1e-10; ( 常用 )

小數點後十六位時:

double a=0;

double b=0.0000000000000001;

程式輸出 yes!

#include #include #include using namespace std;

int main()

二:該浮點數是否為整數。

floor 函式。(ceil 函式向上取整)

其功能是「向下取整」,或者說「向下捨入」,即取不大於x的最大整數(與「四捨五入」不同)。

若要實現四捨五入。將 floor(x) 改為 floor( x+ 0.5 ) 就可以了。

double c=-3.5;

cout<< floor(c)《程式輸出:

-4-3

-3int 函式。

int (x)  返回 x 的整數部分。

int ( -3.8 )  == -3

int (  3.8 )  ==  3

判斷浮點數是否為整數時:

由於浮點數的運算有可能存在誤差。經過大量的計算之後,整數 1 在浮點誤差影響有可能下變成了 0.9999999999.

如使用 floor 函式,向下取整,則結果是 0 而不是 1.

如使用 int 函式,取整數部分,結果也為 0 而不是 1.

因此採用 「 四捨五入 」 的方式。 使用 floor ( x+0.5 ).

即:floor(x):

當     1 <= x <2     ,函式返回 1.

floor (x+0.5):

當  0.5 <= x <1.5  ,函式返回 1.

#include#include #include #include using namespace std;

int main()

{ double ans;

int n;

while(cin>>n)

{ans = sqrt(n);

if(floor( ans+0.5 ) == ans)cout<<"int"<

浮點數比較

在數 算當中經常會涉及到判斷兩個數是否相等的情況 對於整數很好處理 a b這樣的乙個語句就可以解決全部的問題 但是對於浮點數是不同的 首先,浮點數在計算機當中的二進位制表達方式就決定了大多數浮點數都是無法精確的表達的 現在的計算機大部分都是數字計算機,不是模擬機,數字機的離散化的資料表示方法自然無法...

浮點數比較

0 我們來看乙個程式 include int main else 1 執行結果 可以看出,我們輸入的2.3和計算出來的 4.6 2 相等,這個沒有問題。但是如果遇到下面這個問題 3 我們再來看一段程式 include include define eqs 1e 8 define equal a,b ...

浮點數比較

這裡的內容比較全 在數 算當中經常會涉及到判斷兩個數是否相等的情況 對於整數很好處理 a b這樣的乙個語句就可以 解決全部的問題 但是對於浮點數是不同的 首先,浮點數在計算機當中的二進位制表達方式就決定了大多數浮點數都是無法精確的表達的 現在的計算機大部分都是 數字計算機,不是模擬機,數字機的離散化...