1. 程式人生 > >如何判斷int、double、float型別資料為0或判斷一個未知資料型別的為0或相等

如何判斷int、double、float型別資料為0或判斷一個未知資料型別的為0或相等

這個判斷適合很多語言,

首先要明白一點:對於數字而言,放在程式裡,整數佔用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了,