C語言如何判斷浮點數是不是整數(說法不太嚴格)

時間 2021-08-11 17:05:32

1樓:匿名使用者

#include

//a可以是float、double、long double型if (floor(a) == a)

else

2樓:匿名使用者

將其轉化為 int 型別,如果(int)i == i ,那麼它就是小數部分全部為零的浮點數。

3樓:汐日南莘

假如a是浮點數,再定義一個整型變數int b=a;再定義一個float c=a/b,假如c=1則浮點數a是整數

4樓:匿名使用者

無論是通過sizeof檢視位元組數(int和float佔用位元組數相同),還是做float轉換為int然後相除判斷是否等於1(int轉為float可能尾數丟失),或者是sprintf轉化為字串去檢查是否有小數點(int會轉換為float,導致有小數點出現),都有問題。

以字元讀入數,挨個字元判斷,檢查到有小數點且所有字元在字元‘0’到‘9’之間,且小數點後不超過6位可以判為float,超過為double,沒有小數點為int;只長度為1且字元為‘a’到‘z’或‘a'到'z'為char,長度超過1為字串。

5樓:金色潛鳥

用%g 格式把 float, double 轉字串,檢查字串裡有沒有小數點,有就不是,無就是整數。

例如:double y=23.000;

int i,l,flag;

sprintf(str,"%g",y);

l = strlen(str);

flag = 0;

for (i=0;i#include 用 裡面的flt_epsilon,dbl_epsilon 極小誤差判斷if ( fabs(x - (int) x) <= flt_epsilon) printf("yes int !\n");

如果 數值太大, (int) x 超出範圍,這個方法就不行了。

6樓:匿名使用者

c語言裡數字輸入輸出的時候都有確定它的型別的啊,不用判斷的.

如果你指的是那種直接給你的一個數的話,那是不確定的,比如2.0可以確定它是浮點數,但是2就不確定了,,可能是浮點數,也可能是整形的,看你定義的時候是怎麼定義的了

7樓:

c語言裡浮點數和整數的操作和表示都不相同,這種說法很不嚴格,所以如何判斷,就看你自己的定義啦。

我的理解是,如果一個浮點數可以分為整數部分和小數部分,那麼你想判斷一個浮點數是不是跟它的整數部分基本相同,嚴格一點說就是誤差很小。這樣的話,你可以這麼寫:

double err = 1e-10; //先自己定義誤差x = 2.9999999997;

if (abs(int(x)-x)< err) // 和它整數部分誤差的絕對值是否小於規定的誤差...

8樓:匿名使用者

如果a=int(a)為真,就是了。

如何判斷c語言的一個浮點數是不是整數?

9樓:金色潛鳥

用%g 格式把 float, double 轉字串,檢查字串裡有沒有小數點,有就不是,無就是整數。

例如:double y=23.000;

int i,l,flag;

sprintf(str,"%g",y);

l = strlen(str);

flag = 0;

for (i=0;i#include 用 裡面的flt_epsilon,dbl_epsilon 極小誤差判斷if ( fabs(x - (int) x) <= flt_epsilon) printf("yes int !\n");

如果 數值太大, (int) x 超出範圍,這個方法就不行了。

c語言中怎樣判斷輸入的是整數還是浮點數

10樓:匿名使用者

scanf(%s,str);//先存成字串if(null==strchr(str,'.'))//等於null是沒有找到小數點else{sscanf(str,%lf,&b);//再從字串格式化成浮點型例如:inti;floatf;doubled;輸入i是整數,輸入f是float型,輸入d是double型(2)看輸入格式scanf(%d%f%lf,..

);%d輸入整數;%f輸入float型;%lf輸入double型------------------至於鍵盤上拍入的數,scanf(%d,&i);如果你拍入123或-123,沒問題,拍入的是整數,讀進去,也是整數。如果你拍入123.4或-123.

4,只會讀進去123或-123,而.4殘餘在緩衝區。scanf(%f,&f);如果你拍入123.

4或-123.4,讀進去是浮點數123.4或-123.

4如果你拍入123或-123,讀進去自動變浮點數。-------------------c語言的數的例子:123,-123,--整數,輸入格式%d064,040--八進位制整數,輸入格式%o

11樓:

先存成字串,判斷有沒有小數點,再從字串格式化成整型或浮點型。

#include

#include

#include

//char *strchr( const char *str, int ch );

int main(int argc, char *argv)else

system("pause");

return 0;}

c語言中怎麼判斷輸入的數是整數還是浮點數?

12樓:匿名使用者

判斷是否有小數唄,但是不科學,也許有更好方法#include

void main (void)

else}

13樓:匿名使用者

c語言中沒有判斷輸入是整數還是浮點數的既有功能,需要自己實現.

實現方法是把輸入作為字串讀入,然後自行分析該字串表示的是整數還是浮點數.

14樓:匿名使用者

可以用sizeof()來判斷,他們的位元組數是不相等的!int是4,float是8!希望對你有幫助!

各位是如何判斷一個浮點數小於,小於等於零的

15樓:匿名使用者

對於e^t,t為任意實數,始終大於0,而此時-2x小於等於0 所以此時小於等於0

c語言怎麼判斷一個數是不是整數

16樓:凌亂心扉

方法1:

#include

#include

float x;

...if(fabs(x-(int)x)<1e-8)printf(“x是一個整數

\n”);

else printf(“x不是一個整數\n”);

方法2:

int c=(int)b,d=(int)(b+0.999999)if(c==d)

printf(“是整數\n”);

else

printf(“不是整數\n”);

方法3:

float b;

...if(b-(int)b==0)

printf(“是整數\n”);

else

printf(“不是整數\n”);

方法4:

float b;

...if(b!=(int)b)

printf(“不是整數\n”);

else

printf(“是整數\n”);

17樓:聽不清啊

如果用實型變數x接收一個數或通過計算得到一個數後要知道它是不是整數,沒有很好的辦法。因為實數在計算機中不能準確地儲存,所以不能直接判斷兩個實型量(x,與表示整數的實型量,必須要同型別的量才能比較)是否相等,首先要明確能允許的誤差是多少。比如,一般情況當誤差的絕對值小於10的負8次方時我們可以認為兩個實數是相等的。

所以,要使用math庫。

#include

float x;

......

if(fabs(x-(int)x)<1e-8)printf("x是一個整數\n");

else printf("x不是一個整數\n");

18樓:王錚教授

其實嚴格意義上來說,你們都想複雜了。

我們應該從問題角度出發,根本不用函式。

接下來我用c++來說明,其實c也同理

#include萬能頭挺好的

int main()

19樓:匿名使用者

if(number%2==0||number%2==1)是整數; //number對2取模,餘數為0或1就是整數。

else 不是;

實際上,還可以在定義上取巧,比如說,把輸入數n設為float ,另有一個 int m;

輸入n後,

m=n;//強制把n取整賦給m

if(n==m)就是整數了。

20樓:真忙得很

#include

int main(void)

這裡while(scanf("%d",&a)==1)代表如果輸入的是一個整數就返回1並執行printf("輸入的是一個整數“);如果不是就返回0,退出迴圈,並執行printf("輸入的不是一個整數“);

C語言中怎樣判斷輸入的是整數還是浮點數

scanf s,str 先存成字串if null strchr str,等於null是沒有找到小數點else sscanf str,lf,b 再從字串格式化成浮點型例如 inti floatf doubled 輸入i是整數,輸入f是float型,輸入d是double型 2 看輸入格式scanf d ...

c語言如何把整型轉換成浮點數,C語言如何把整型轉換成浮點數?

程式猿3號 c語言有以下幾種取整方法 1 直接賦值給整數變數。如 int i 2.5 或 i int 2.5 這種方法採用的是捨去小數部分,能用於你的問題。2 c c 中的整數除法運算子 本身就有取整功能 int int 而下面介紹的取整函式返回值是double。整數除法對正數的取整是捨去小數部分,...

C 中如何判斷浮點數是否為,C 中 如何判斷乙個浮點數是否為

判斷這個實數的絕對值是否小於乙個很小的實數,比如絕對值小於1e 6 double a if fabs a 1e 6 return true else return false 戴曼彤 float f 0.000 bool bl f 0.000001 f 0.000001 大概就是這樣。 竹飆史春嵐 ...