C语言中%g的问题

2024-11-17 16:39:39
推荐回答(4个)
回答1:

C语言中,printf()函数的%后面可以接这些参数:
%[flags] [width] [.precision] [{h | l | I64 | L}]type
flags是格式化输出的显示方式,width指定最少的输出字符个数,precision指定最大的输出字符个数,或者浮点数的输出精度,type指定输出类型。

根据你的情况,printf("%.7g\n",123.56789),则是输出七位有效数字的double型,因此123.56789被四舍五入到123.5679 ;
而printf("%g\n",123.56789)没有指定精度,所以采用默认值6,所以输出六位有效数字的123.568
你还可以试试这个:printf("%13.7g\n",123.56789)看看结果怎样?

查看MSDN可以得到更多的帮助^_^

回答2:

可以自动选取%f或%e的方式输出浮点数的有效数字.
如果没有指出精度,
则默认为6;
如果格式转换后其指数小于-4
或者大于等于其精度,
则使用e形式.
转换结果消除了小数部分末尾的零;
小数点前面至少有一位十进制数字.

回答3:

http://baike.baidu.com/view/410546.htm
到百科看看
可能会有帮助

回答4:

输出精度不同