2016-09-29 58 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)

相关问题