大学C语言float 如何将小数存入内存?
发布网友
发布时间:2022-04-22 15:02
我来回答
共3个回答
热心网友
时间:2023-11-10 04:07
目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定为2.
即把一个浮点数表示为尾数乘以2的指数次方再添上符号。下面是具体的规格:
符号位 阶码 尾数 长度
float 1 8 23 32 //4个字节
double 1 11 52 64 //8个字节
举个例子:
100=1*2^6+1*2^5+1*2^2=(1+1/2+1/16)*2^6
100为正数,符号位为0,
阶码,一共8位,因为指数可以为负,为了便于计算,规定都先加上127,在这里6+127=133转为二进制为10000101
尾数转为1.1001,去掉最高位整数位1,则尾数转为23位二进制为10010000000000000000000
合在一起就是01000010110010000000000000000000
这里解释一下为什么去掉最高整数位1,因为在二进制里面最高位始终为1,所以可以去掉它,本来要24位才能表示的数值范围,用23位存储就可以达到。追问如果是小数呢?比如90.56
追答对于小数90.56=1.415*2^6,这时尾数为1.0110....(后面省略了),当位数大于23位时,这时就由精度损失了,其余和上面一样了。
热心网友
时间:2023-11-10 04:08
float是基本数据类型,可以直接保存。如果要存为整数,可以将浮点数减去该值整数部分(float )a-(int)a再乘于十万保存为int类型
热心网友
时间:2023-11-10 04:08
在计算机里,任何数据都是装入内存的。
所以你问的什么意思,根本不明白
C语言中,float类型怎么储存小数点后六位的,第六位会四舍五入么?
printf("%f\n",x);%f, 没有指定精度(位数),c缺省设定的是小说点后6位,因此截短(四舍五入了)printf("%.12lf\n",x);这个指定了精度是小数点后面12位,因此输出12位;但之所和原来赋值时不同,是由于x的类型是float,而非double。 float的精度本身不如double。 这个话题由来已久,涉及...
float型数据在C语言中的存储方式是什么?
C语言的合法数据类型的关键字大体上分为:int(整型)、float(单精度型)、double(双精度型)和char(字符型)。除了这基本的4种类型外,还有一些数据类型的修饰符,有long(长整型)、short(短型)、signed(有符号型)和unsigned(无符号型)。float是浮点型数据类型,用于存储单精度浮点数或双精...
请问在C语言中:float型的数据在内存中是如何存放的?比如数据10.5,那它...
10.5=10 +0.5 = 10010.1 =1.00101*(2^100)符号位1位 1 表示正数 指数位8位 100 + 0111 1111 = 1000 0011 尾数23位 (1)0010 1000 0000 0000 0000 000 组起来就是 1,100 0001 1,001 0100 0000 0000 0000 0000
c语言float a, b, c怎么使用?
3、按F5运行,得到结果。4、float a,b,c;意思是设置三个名为a,b,c的浮点变量,区别于整形变量(int a,b,c;)和字符串变量(char a,b,c;),浮点变量是可以带小数的数值变量。5、scanf("%f",&a);表示将你输入的数字以带6位小数的形式储存于a中。6、c=a/b; 是一个赋值语句,意思是...
C语言中的小数(float,double)
在 C 语言中,小数分为 float 和 double 两种类型。float 为单精度浮点数,使用 4 字节存储,double 为双精度浮点数,使用 8 字节存储。小数的输出可以使用 printf 函数,对应格式控制符为 %f 和 %lf。通过 printf 函数,可以输出小数的十进制形式或指数形式,输出结果会根据小数的大小进行适当的四舍...
C语言关于小数存入数组函数编写
C语言关于小数存入数组函数编写 floatmun;unsignedchartab[10];mun的小数点在任意位置,要求将小数mun保存在字符串tab的末尾(当然tab[9]=’\0‘)voidDispFloatNum(unsignedlongNum,unsignedcharDotPos,unsignedcha... float mun;unsigned char tab[10];mun的小数点在任意位置,要求将小数mun保存在字符串tab的末尾(...
C语言中float到底能存多大的数?!
一般情况下,int在内存里以2进制补码存储,跟你想的差不多,这个就不用多说了;float存储方式如上面所示,1位符号位,指数位8位,小数位23位,共32位即4个字节。假设小数位表示的纯小数为x,指数表示的数字为n,符号为负,则这个float数字为(-(1+x))×(2^n)。纯小数部分用补码表示,小数...
C语言关于小数存入数组函数编写
0.12345的小数点后第一位就是tab[0]=(int)(0.12345*10)第二位就是tab[1]=((int)(0.12345*100)%10 第三位就是tab[2]=((int)(0.12345*1000)%10 以此类推
C语言float类型储存和printf输出问题
原因就是,你使用了lf输出,其实是将float x转换为一个double输出了。相当于 double y = x;,然后输出y,这样后面的数值其实是因为一个4位浮点数给8位浮点数赋值的时候,将x的真实存储以double的精度显示出来了。具体的说,这涉及float的二进制保存方式,如果你有兴趣,可以看看基础语法书上关于float...
请教C语言浮点数输出问题。
将一个内存存储的float二进制格式转化为十进制的步骤: (1)将第22位到第0位的二进制数写出来,在最左边补一位“1”,得到二十四位有效数字。将小数点点在最左边那个“1”的右边。 (2)取出第29到第23位所表示的值n。当30位是“0”时将n各位求反。当30位是“1”时将n增1。 (3)将小数点左移n位(...