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

2021-08-04 10:35:22 字數 4628 閱讀 4108

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語言判斷有幾個零,c語言如何判斷一個數字有幾個

include include int main if sum printf 你輸入的字串中共包含 d個0。n sum else printf 你輸入的字串中不包含0。n system pause return 0 c語言如何判斷一個數字有幾個1 如果是浮點型 也可以是整型 double a 123...

c語言中如何判斷輸入的是字元還是數字

可以使用 進行判斷 include intmain return0 擴充套件資料c語言判斷輸入是否是數字 intdigit printf pleaseinputainteger n intret scanf d digit if 0 ret 1 可以用sa f或gets函式直接接收輸入的字串,然後用...

c語言如何獲取上下左右箭頭並判斷

上下左右箭頭 產生的鍵值是雙鍵值,具體數值與你的鍵盤 設定 有關。有可能 是 十進位制內 224 72 上 224 80 下 224 75 左 224 77 右 程式設計序,用容 int key getch 讀 一個鍵值,如果 它等於 224,則 再 讀 一個鍵值 key2 getch 如果 key...