如何判斷int、double、float型別資料為0或判斷一個未知資料型別的為0或相等
阿新 • • 發佈:2019-01-04
這個判斷適合很多語言,
首先要明白一點:對於數字而言,放在程式裡,整數佔用4或者8個位元組,小數則佔用8個位元組
字面量整數的型別是int,比如:10的資料型別是:int,所以:int a = 10 編譯器才不會報錯
字面量小數的型別是double和float(目測C語言對這個分得不是太清楚,搞得我也很糊塗),比如:1.0的資料型別是:double,所以:int a = 1.0 (在java中 float f = 1.0編譯器都會報錯)
那麼對於不知道的兩個數的資料型別怎麼比較他們相等呢?
比如:a 和 b;
如果兩個數相等,那麼他們的差 sub 為0
那怎麼判斷他們的差為0呢,我們不能這麼寫:
if (a-b==0){}
因為上面說過,0是一個整數,
不能用一個整型數來和浮點數做大小比較,需要把他們轉換為同類型比較,float f= 0.1f 強轉為int型就是0,但能說f==0嗎?顯然不能
如果一個數是float f = 0.0000009 那麼f == 0,就成立了,但0.00000009 != 0;
所以如何判斷一個未知資料型別的數為0:
只要這個數小於參考資料型別的最小正值、且大於最大負值,(sub < 最小正值 && sub>最大負值 ) 那麼這個數就為0了。
比如 參考資料型別是int型,int型數的最大負數是:-1,最小正數是:+1,只要 (sub >-1 && sub<+1),那麼這個數就為0了
參考資料型別是:floa或double:最大負數是:-0.000001 最小正數:+0.000001 只要(sub > -0.000001 && sub < +0.000001),那麼這個數就是0了,