C语言里小数是如何表示和存储的?

Python018

C语言里小数是如何表示和存储的?,第1张

1.C语言的小数都是浮点数。浮点数属于floating binary point types,也就是说都double型的数值在相加减的时候,会将数值转换成二进制的数值如10001.10010110011这种表示发再做相加减,但是在转换成二进制代码表示的时候,存储小数部分的位数会有不够的现象,即无限循环小数,这就就会造成小数相加后结果会有微差距。

2.浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。

3.浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。

一个浮点数a由两个数m和e来表示:a = m × b^e。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。

程序设计就是让计算机按照一定的指令来进行工作,可以说数据的处理是程序设计的主要任务。那么,C语言中的小数(float,double)怎么输出?欢迎大家阅读!更多相关信息请关注相关栏目!

小数也称实数或浮点数。例如,0.0、75.0、4.023、0.27、-937.198 都是合法的小数。这是常见的小数的表现形式,称为十进制形式。

除了十进制形式,也可以采用指数形式,例如 7.25×102、0.0368×105、100.22×10-2等。任何小数都可以用指数形式来表示。

C语言中的小数也有这两种表示形式。在书写时,十进制形式和数学中的一样,指数形式有所差异。

在C语言中小数的指数形式为:

aEn 或 aen

a 为尾数部分,是一个十进制数,n 为指数部分,是一个十进制整数,E或e是固定的字符,其值为 a×10n。例如:

2.1E5 = 2.1×105,其中2.1是尾数,5是指数。

3.7E-2 = 3.7×10-2,其中3.7是尾数,-2 是指数。

0.5E7 =0.5×107,其中0.5是尾数,7是指数。

C语言中小数的.数据类型为 float 或 double:float 称为单精度浮点数,double 称为双精度浮点数。不像整数,小数的长度始终是固定的,float 占用4个字节,double 占用8个字节。

小数的输出

输出 float 使用 %f 控制符,输出 double 使用 %lf 控制符,如下所示:

#include#includeint main(){float a = 0.302ffloat b = 1.23002398double c = 123double d = 78.429float e = 128.101printf("a=%f b=%f c=%f d=%lf e=%lf ", a, b, c, d, e)return 0}

运行结果:

a=0.302000

b=1.230024

c=123.000000

d=78.429000

e=128.100998

对代码的说明:

1) %f 默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断。

2) 将整数赋值给 float 变量时会转换为小数。

可以在输出时,指定小数点后的有效位数,实现精确到若干位的效果。

要精确到小数点后若干位,则数据类型为浮点型,可能为单精度(float)或双精度(double)。

在C语言中,使用格式化输出函数printf来实现输出。

输出格式为

%.NF

1 %为格式化字符串的引导字符。

2 .N表示指定显示N位小数。

3 F为类型字符,对于float, F值为f, 对于double,F值为lf。

举例:

1 要输出float a=1.23234保留3位小数的写法为:

printf("%.3f",a)

2 输出double b=123.345232保留4为小数,写法为:

printf("%.4lf",b)