C语言中的double是不是可以输出任何实数,但是有限制而已,是嘛? 还有%g是什么意思?

如题所述

不是的double是浮点数据既然是浮点型就有个死去,死去的数无法输出,就浮点数据而言死去是无法去掉的
%g
%g: 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数
另:
%f 浮点数
%e 用科学表示格式的浮点数追问

还是不懂!!!
double他可以输出什么数?

追答

double总共有64位吧ms然后内存里存的是m*2^r,存基数和指数,2是默认的不存m和r是整数都是和这样乘完了肯定有死区么,因为r不能足够小当为负数是,想想是不是啊永远不可能是很小的小数

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-24
double输出的是浮点数,像,3.125,12356等
%g: 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数追问

123456、789546 这些类似的数字也可以输出?
%g解释明白点!!!不明白,什么G同g格式

追答

123456 789456 能输出啊 %g 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0

追问

你的意思就是说%g可以选择型在%f、%e使用?
%g输出较短的数值之类的?

追答

%g 是根据数值不同自动选择%f或%e.明白了吗

第2个回答  2011-12-24
double就是比float精度高而已,都是浮点数。C语言里一般是8字节64位。所以只要是范围内的实数都可以输出。
至于%g,楼上也说了,就是%f和%e中输出宽度较短的一种。使用%G时,如果输出是指数型则用大些E表示,用%g时用小写的e表示。追问

那这样子10 11 这个整数才可以输出?
%g=%lf吗?
如果输出是指数型则用大些E表示,用%g时用小写的e表示。这句话什么意思?

追答

整数当然用整形%d输出啊, %g是%f和%e两种里面选一个,看哪一个输出宽度短。而如果是按%e指数输出,显示的就是多少e多少,当你使用了大写%G,输出就是 多少E多少,显示的差别而已。

另外c语言里,双精度也是用%f, l用于长整型数,可用于d,o,x,u前面。

追问

123456、789546 这些类似的数字也可以输出?
我还是不明白%g
你的意思是%e、%f=%g?
%e是输出多少字节的?
%f是4个字节!

追答

%e其实就是科学记数法,比如1.234560e+002(一般小数占6位,指数部分包括正负号共5位,同样可以用%m.ne来限定),%f是小数表示法,123.456.
例如:f=123.468
%f: 123.468000
%e: 1.234680e+002
%E: 1.234680E+002(大小写区别而已)
%g: 123.468(%f10列,%e13列,所以按%f输出,省略无意义的零)
%G: 同样是大小写区别而已。如果按%f输出则与%g没区别。如果是按指数输出则选择%E而不是%e。(实际中%g很少用吧)

至于123456这些肯定是在double范围内的。
比如定义 double f=123456; 那么用%f,%e,%g输出都可以。
顺便扯一下,整数是最常见的,所以定义了整形int,但int可能范围不够,所以有了长整型long。有了long小数没法表示呀,就有float。同样float的精度不够,才6-7个有效数字,所以才有了double甚至long double,有效数字高达15-16和18-19位。
所以浮点数已经包括了范围内的实数,回到你的提问,答案是肯定地。

本回答被提问者采纳
相似回答