首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中,%g和%f的区别是什么?

在C中,%g和%f的区别是什么?
EN

Stack Overflow用户
提问于 2011-05-06 22:49:11
回答 4查看 111.7K关注 0票数 33

我正在学习K&R编写的C编程语言。下面是打印双变量的语句,它是这样写的

代码语言:javascript
复制
printf("\t%g\n", sum += atof(line));

其中sum声明为double。谁能告诉我什么时候使用%g,如果是双精度的,或者是浮点数的,%g和%f的区别是什么?

EN

回答 4

Stack Overflow用户

发布于 2011-05-06 23:03:22

它们都是浮点输入/输出的示例。

%g和%G是科学记数法浮点数%E和%e的简化形式。

%g将接受一个可以表示为%f (简单浮点数或双精度数)或%e (科学记数法)的数字,并将其作为两个数字中较短的一个返回。

print语句的输出将取决于sum的值。

票数 45
EN

Stack Overflow用户

发布于 2011-05-06 23:22:16

正如展开指出的那样,f和g提供了不同的默认输出。

粗略地说,如果你更关心小数点后的细节,我会用f,如果你想缩放大的数字,就用g。从一些模糊的记忆中,如果你打印的数字表格保持整齐,f对于小值是非常好的,但是如果你的数字变大了,布局很重要,那么就需要像g这样的东西。当你的数字往往很小或很大,但永远不会接近十的时候,E更有用。

另一种方法是指定输出格式,这样每次都会得到表示数字的相同数量的字符。

很抱歉这个模糊的答案,但它是一个主观输出的东西,只有在生成的字符数很重要或表示值的精度很重要时才会得到很难的答案。

票数 3
EN

Stack Overflow用户

发布于 2022-02-25 03:57:09

%g删除浮点数中的尾随零,

打印(整数)到10**6,之后在e+中打印到精度6

123456等于123456

1234567表示1.23457e+06

打印(浮点数> 10** -4 )到精度6,之后四舍五入到pre。6

1.23456等于1.23456

1.234567等于1.23457

打印(浮点数< 10** -4 )最高精度为4,否则为ne-0p

0.0001等于0.0001

0.000001等于1e-06

0.12345678等于0.123457

%G做同样的事情,但是exp(e)变成exp(E)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5913102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档