為什麼c語言中printff13輸出的是

時間 2021-08-11 17:43:33

1樓:匿名使用者

1/3預設int型結果為0,進行強制轉化後仍然為0,只不過是float型,而1.0/3.0預設為float型

2樓:

這個嗎,你是初學者嗎?1/3是取整數,也就是=0,那為什麼小數後面有6個0了,是因為%f輸出的時候預設為6為有效小數。1.

0/3.0是做除法,它的內型定義為為了浮點型,有就是有小數位的。

3樓:你我一樣的天空

注意輸出型別,%f輸出是浮點型,而1/3都是整形,隱式轉換為零,所以輸出0.000000,這裡懂了後面自然就懂了

4樓:

這個嗎,你是初學者嗎?1/3是取整數,也就是=0,主要是也因為1是整數,而1.0是單精度

5樓:匿名使用者

c語言中的整數除法規則是返回結果的整數部分,比如1/3 = 0.3333333 整數部分是0,所以 1/3=04/3 = 1.3333333 整數部分是1,所以 4/3=1而浮點數和double則是返回帶小數部分的結果。

6樓:言言爾爾

printf("%f",1/3)是雙精度的結果,簡單說就是取整。如printf("%f",4/3)輸出的是1.000000,而

printf("%f",1.0/3.0);則是正常計算。

7樓:匿名使用者

rvusonah5 2 f к· ㏄qmrf

szudmi

ckbv

fgzyhqm

abohpwl

[c語言]printf("%f\n",1.0/3*3)與printf("%f\n",1/3*3)計算結果為什麼不同?

8樓:網海1書生

1.0/3*3這是按浮點數進行計算,1.0/3*3=0.333333...*3=1

1/3*3這是按整數進行計算,1/3*3=0*3=0 (1/3的值會先取整,結果為0)

9樓:匿名使用者

1.0/3*3是實型運算,與你學過的數**算是一致的,輸出結果是1.000000

1/3*3是整型運算,1/3=0,0*3=0,輸出結果是0.000000

語句printf(「%f%%,1.0/3」);輸出的值為什麼 怎麼做啊

10樓:匿名使用者

輸出結bai果是0.333333%。

printf("%f%%",1.0/3),其中的%f就是以浮點du數格式輸出1.0/3的結果。由於1.0是浮zhi

點數,dao所以1.0/3也是一個浮點數,答案版就是0.333333,最後二個連續的%%就是實際輸出一個%符號。

11樓:year飛鵬

printf("%f%%",1.0/3);

其中的%f就是以浮點數格式輸出1.0/3的結果。由於1.0是浮點數,所以1.0/3也是一個浮點數,答案就是0.333333最後二個連續的%%就是實際輸出一個%符號。

12樓:胡書培

printf中連續兩個%%表示輸出一個%,0.333333%

13樓:_藍顏_知己

是不是問為什麼是0.3333333而不是1.33333吧 我也是來找答案 剛才突然看明白了 是1.0除以3 而不是1. 0/3

14樓:灰塵緣

說具體點。。。。。。。。。

書上有一個例題1.0/3.0*3.0==1.0,當我用%f輸出時值為1.000000,用%d輸出時值為0,這是為什麼?

15樓:

1.浮點數是用符號位+階碼+尾數原碼錶示的,1.0在記憶體中的二進位制是00111111 11110000 00000000 00000000 00000000 00000000 00000000 00000000。

若按%d即整數就是中取它的最低4個位元組,看這是不是0?

16樓:匿名使用者

這個和精度損失沒有關係關鍵在printf()輸出的時候沒有考慮到資料型別轉換的問題printf("%d",1.0/3.0*3.

0)計算的1.0/3.0*3.

0是浮點數1.0它在記憶體是以這樣的形式儲存的:00111111 11000000 00000000 00000000以4位元組表示而printf()輸出的時候並不以為自己要輸出一個浮點數,而是把上面的後2位元組當成整型來輸出,結果就變成了0 例子:

#include

void main()

結果是0,printf()出錯 #includevoid main()

結果是1,轉換之後沒有損失 浮點數轉整型直接捨去小數,不會四捨五入

17樓:匿名使用者

猜想:因為這個結果應該是雙精度浮點型,但是精度有所損失,估計實際的結果是0.99999什麼的,不是1,用%f輸出四捨五入了,用%d精度損失發生錯誤了。

證明:嘗試printf("%f",0.9999999999999);然後換成%d試試(結果肯定是不對的)

c語言中為什麼,c語言中為什麼 0177777要轉換成原碼真值是 1。0123就不用轉換,真值是

整數有正整數和負整數,為了表示負數,一般用最高位來表示符號,因此,最高位是不能用來表示數值的。所以,一個16位的整數最大值為 2 15 32767 10 7fff 16 0111 1111 1111 1111 2 括號後面是進位制。也就是除去最高位,用來儲存數值的位數是總位數 1,也就是15位。而用...

計算機c語言中1f什麼意思,c語言中 1f是什麼意思

把精確度比float資料小的資料型別轉換為float型別,以便於下面的運算 這是c語言中輸出格式控制語句。後面接上的內容是控制變數輸出格式的 f 表示 浮點數 6.1f 就是輸出的變數總共佔6列,其中小數佔一列。1f 你用了數字1,不是字母l的小寫.這個1的意思是輸出 入總位數為1位。參考 floa...

C語言中unsigned int a 1 printf1 d n」,a為什麼輸出值

吉祥二進位制 輸出值為 1。原因 1 在c語言中整型常量的資料型別預設為int,所以unsigned int a 1中,1的型別是int型別。實際上是有一個隱式轉換,即將int型別轉成unsigned int型別。這個轉換的意義不大,因為沒有超出unsigned型別的表示範圍,所以a的機器碼依然是 ...