當前位置:首頁 » 編程語言 » c語言判斷一個數尾數是否為零
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言判斷一個數尾數是否為零

發布時間: 2022-06-10 13:23:55

1. c語言問題

補充:
你可以這樣理解。
main()
{
int a,i=0.000000000000000000001;
if(a=i-0.000000000000000000001);
printf("00000000000000000");
}
按理說這句應該不會顯示那一堆00000000000000的 ,但是卻顯示了...
本來變數a應該為0的,由於誤差導致上面的if句成為:if(a=i),a不等於0了。
所以那句沒錯。(與源語句沒出入吧?)
你看到了結果,沒看到過程。

順便提下,不反對 可愛小爬爬大大的觀點。小數部分轉換成2進制是乘以2,進位置1的原則。小數乘以2,大部分永遠都不可能為一。如:0.456
0.456*2=0.912(沒進位,所以第一位是0):0
0.912*2=1.824(進位,第二位是1):01
1.824*2=3.648(進位,第三位是1):011
3.648*2=7.296(進位,第四位是1):0111
取15位0. 011101001011110(後面是無窮的)。
所以大多數情況下,小數是不可能精確表示的。

在幫她補充一點。爬爬說的位0,其實有兩種情況。
1:當一個浮點數的尾數為0時(如2.0)(這種情況我認為是可以用==)
2:當階碼的值遇到比它能表示的最小值還小時(這是爬爬說的那種情況)
小數都是以類似科學計數法存儲的。這里就不說了。
有興趣的可以搜索float內存存儲。
本不打算說這個的。但是小爬爬這一鬧...我不說就無知了。初學者知道這個沒什麼用。理解我所說的下面的和上面那一段就好。

main()
{
float i=0.000000000000000000001;//20個0
if(i==0.000000000000000000001)//20個0
printf("00000000000");
getch();
}
請看,本身if句條件是滿足的,應該輸出00000000
但是實際上是不可能輸出的。
為什麼呢?因為0.000000000000000000001在這里被看成是0。

他說的誤差,不是0的誤差,是很小的小數的誤差。
main()
{
float i=0.000000000000000000001;//20個0
if(i<0.00000000000000000001)//19個0
printf("00000000000");
getch();
}
如果改成這樣就正確了(小於一個很小的數)

一個0存儲進去,的確怎麼搞輸出來也是0,但是0.00000000000000000000000001搞出來可能也成0了。誤差就在這。

2. c語言中怎麼得到任意整數的階乘末尾的0的個數

先用for循環求階乘;
然後用取余數的計算判斷一下最後一個數字是否為0,比如97010%10,那麼就是余數就是0,只要%10就行。余數為0就把他輸出,不是0的不用管。也要一個循環來遍歷一下。

很簡單,自己寫好了。
另外任意整數是不現實的,必須定義一個最大值,要不計算機會溢出的,隨便給個最大值。比如99999,然後循環求從1到99999的連乘運算。最後循環用%10的方法,是0的就輸出,不是0的就罷了。

3. 關於C語言中判斷實數是否為零的量··

是要與1e-6代替。。意思是當小於這個數時就認為是等於0.而如果直接判斷的話,真的等於0的情況就會缺失。

4. C語言計算一個數字最後幾位的0的個數

利用取余啊,先對10取余得到a,再用(原數-a*10)得到個位上的數字,判斷是不是零,依次下去,就能得到個數了,我有點事,沒辦法寫出來,就這樣的演算法,你自己好好想想吧

5. 用C語言程序判斷一個浮點型的數是否為零

浮點型,由於精度關系(FLOAT6位),最小分辨0.000001,
當存儲一個數時,只有六位是准確的,比如存儲0,可能在內存中的值為0.0000001321。。。。。
所以判斷浮點型的0值最好用fabs(i) < 0.000001

6. c語言中如何精確判斷一個數是否等於零

//1整型
int i=2;
if(i==0)
printf("等於零");
else
printf("不等於零");

//2浮點型
float i=2;
if(fabs(i)<1e-6)
printf("等於零");
else
printf("不等於零");

7. 用C語言實現,判斷某位是否為1或是為0

引用一樓的,一樓題目看錯了
#include<stdio.h>
int fun(unsigned char a)
{
if((a&0x01)&&(0==a&0x02))//這少了個條件
return 0;
else
return 1;
}
void main()
{
unsigned char a=0x41;
int b;
b=fun(a);
printf("b=%d\n",b);
}

8. C語言里怎樣判斷數組里的一個元素為空還是為0

NULL表示是空,即什麼也沒有。
剛設立一個數組時,裡面的元素是你定義數組的類型,數值不確定
例如:char ch[4];
現在裡面是隨機值,同wk_wangkui的回答,
memset(ch,'0',sizeof(char)*4);這時ch里的數值是字元型的『0』。

9. C語言 判斷一個數末尾是否0,如果是則輸出yes(如120)如果不是輸出no(如111)

我這份,不管多大的都行。

#include<stdio.h>
#include<string.h>
main()
{
chars[1024];
scanf("%s",s);
intlen=strlen(s);
printf("%s ",s[len-1]=='0'?"yes":"no");
}

10. C語言 關於判斷一個浮點數是否等於0

浮點數是近似值。 一般用精度判斷
比如 判斷是否為0 可以用
if(fabs(y)<1e-6)
這樣就可以認為是為0 了。
直接==會不正確的。