2016-09-29 19 views
-4
void main() 
{ 
char a; 
float f = 10; 
for(a=1; a<=5; a++) 
{ 
    f-=.2; 
    printf("\nf = %g", f); 
} 
} 

這裏的for循環執行五次,每次f的值遞減。但是根據我,f的最終值應該是9.0,但輸出是9. 爲什麼f的值是沒有進入小數點?爲什麼它的int值是浮動值?

+0

什麼語言是什麼? C? – JJJ

+0

是的,先生的C語言。 – Ron

+5

更好的問題是「爲什麼要這樣」? –

回答

2

如果小數點後面沒有非零數字,則不會顯示%g轉換的小數點。您可以改爲使用%f,或者明確指定想要在小數點後看到的數字位數,例如%.1g始終顯示1位數。

+0

@G Sliepen先生您可以添加原因小數點不顯示%g轉換? – Ron

+1

就是這樣。原因可能是印刷品的簡潔,畢竟9說多達9.0000,不是嗎? –

+0

@Ron因爲這就是'%g'的用途。它只是爲了去除尾隨的零,否則它和'%f'或'%e'(兩者都更常見)是一樣的。你爲什麼用幾乎所有人使用的'%g'而不是'%f'? – Art

1

因爲您的最終值f9沒有小數部分。所以,printf只是不打印它。
如果您需要在這種情況下打印的小數部分,你可以用你的printf%.1f,像這樣:
printf("\nf = %.1f", f)

相關問題