c语言实型变量问题

c语言里这一段

#include <stdio.h>
void main( )
{float f;

f=32.17;

printf("f=%f\n",f);}

为什么运行后 显示的是 f=32.169998而不是32.17呢?最好讲一下详细步骤

在C编译系统中,系统默认所有的的浮点型数据为双精度的(也就是double型)。你把一个双精度的数据赋值给一个单精度数据好比把实形数据赋值给整形数据。这样系统就会进行适当的取舍,就会影响到你数据的精度。最终形成了你所说的现象。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-10-20
因为浮点数常量默认是double类型, 从double转换到float类型会引起截断。
第2个回答  2019-04-22
1
其实%f%lf都一样,都是输出double类型的。
2
当参数即上面的4.0/3.0被传递到printf时,float总是会被转化成double类型的,然后才能背printf正确输出。
3
无论是%f还是%lf,只要不指定
精确度和宽度
,默认的输出都是
小数点
后跟6位,float和double类型只是决定那后6位有几个是有效数字。这点,cf2009000已经说的很清楚了。
4
所以,你的这几行想要输出的就是,输出两个浮点数,一个是float
一个是double。因为第3点,所以,结果都是1.333333。

c语言实型变量问题
在C编译系统中,系统默认所有的的浮点型数据为双精度的(也就是double型)。你把一个双精度的数据赋值给一个单精度数据好比把实形数据赋值给整形数据。这样系统就会进行适当的取舍,就会影响到你数据的精度。最终形成了你所说的现象。

C语言中实型变量的问题
double类型的数据输入最好采用%lg,而且我采用你的输入方式没有得到错误的结果;整型数可以自动转换为实型,而实型转换为整型就要进行强制转换,将丢掉小数位,强制转换的方法是(int)x;pow(x,y)是一个内联函数,编译的时候进行替换操作,所以要进行计算一定要用一个中间变量来存储这个结果,不能直...

C语言问题 实型变量问题
1 其实%f%lf都一样,都是输出double类型的。2 当参数即上面的4.0\/3.0被传递到printf时,float总是会被转化成double类型的,然后才能背printf正确输出。3 无论是%f还是%lf,只要不指定 精确度和宽度 ,默认的输出都是 小数点 后跟6位,float和double类型只是决定那后6位有几个是有效数字...

C语言:a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许...
因为a是实型变量 实型变量在C语言中用double类型来运算,double类型占用8个字节,而10作为int类型是4个字节,所以把4个字节的东西放到8个字节中,相当于四个人住进了八个人的房间,当然是可以的。但是反过来,把double放到int里就是不行的了。语法上规定实型变量是不能存放整型类型的数据的,整型数据...

C语言的数据的实型变量问题
你想 float占4个字节,double占8个字节。如果一个小数据用大数据的范围去存是不是会对空间照成浪费?而有效数字在大多数情况下没那么重要,但要求严格的数据,需要精确到小数点后那么多位的就有实际意义了!现在你若实在不是很理解也没什么,你只要知道你根据需要定义变量类型就可以了!

C语言实型变量, 的一些问题。
因为写成1\/3系统会按照整型变量去计算,因此1\/3=0,乘上3后还是为0。而按照%f浮点型输出,故输出结果为0.000000

c语言中比较实型变量data2和常数0是否相等为什么用fabs(data2)<=1e...
因为在c语言中实数是不确定的,比如实数0可能是0.000001所以不能用data2==0来判断,如果这样判断就算data2是0也会返回false实数的有效位是6位,所以用fabs(data2)<=1e-7来判断是准确的就是说如果比0.0000001还小的话那就是0

什么是实型变量
实型变量的存储类型主要有:单精度浮点型float,双精度浮点型double等char是字符型,存储的是ASCII码,也可以用来存储整形数0~255这几个是长用的,其他的也有,但是几乎用不到 问题四:C语言中什么叫实型数据? C语言中的实型数据是指带有小数的数。比如:1.23,87.225等 根据精度的高低,实型...

C语言中为何整型变量以实型变量输出为0?
1、整形数和浮点数在内存中的存储格式和布局不同(理解浮点数的内存布局和表示方式,请参考:http:\/\/blog.csdn.net\/songjinshi\/article\/details\/7753777)2、printf在进行参数入栈时是根据实参的类型进行入栈,而不是根据格式化字符中指定的类型,具体入栈过程如以下所示。所以造成入栈实参的类型和实际...

在C语言中的实型变量分为2种类型,它们是()和()
C语言提供的实型变量有两种类型:单精度(float)和双精度(double)。include<stdio.h> int main() { float x;double y;x=123456.789;y=123456.789;printf("x=%f\\n",x);printf("y=%f\\n",y);输出 x=123456.789062 y=123456.789000 分析 从程序运行结果可以看出,x的值并不等于赋予的初值,...

相似回答
大家正在搜