请问vc++6.0中什么时候该用float什么时候该用double?double也是用%f输出吗?

请问vc++6.0中什么时候该用float什么时候该用double?double也是用%f输出吗?另外,这是不是还和vc的版本有关系?我感觉特别混乱,麻烦高手解释一下,谢谢

float只有7位小数的精度,超出这个精度必须用double,这是标准c的定义,与版本无关(都是同样标准)
float用%f
double用%lf追问

怎么我用%f也可以输出double类型,而且double类型和float类型在屏幕上的输出都是七位的精度

追答

%f输出是强制将double当成float输出,这个会造成输出的数据不正确,就如同你用%d输出float类型数据一样
double数据的有效数据位数要高于float型,你可以试着用格式输出,比如%.10lf让double类型数据展示更高的精度范围

温馨提示:内容为网友见解,仅供参考
无其他回答

求助,vc++6.0,求三角形面积,无论输入什么数字都这样输出,这是哪里
使用float时,使用"%f"。使用double时,使用"%lf"。你修改一下你的代码就可以了,即将"%f"改为"%lf"。下面在手机上使用易历知食软件里的微C程序设计功能来演示一下修改后的代码,并演示控制输出小数点位数的使用方法,手机上的代码如下图:运行结果如下图(输入:2,3,4):

单精度和双精度有什么不同?
3,double为双精度,占8个字节,有效数位是16位,但在我的电脑且VC++6.0平台中默认显示同样是6位有效数字。4,精度不同。 float在表示十进制时,有效数字为6到7位。double在表示十进制时,有效数字为15到16位。,5.输入输出格式不同。在C语言中,输入输出格式化字符串,float使用%f,而double使用%...

在VC++6.0上使用c语言编程,单精度浮点型和双精度浮点型为何都只能精确到...
float 32 6-7 double 64 15-16 long double 128 18-19 ANSI C 并未具体规定每种类型数据的长度、精度、数值范围,有的系统将double所增加的32位全用于存放小数部分,这样可以增加数值的有效范围,减少舍入误差。有的系统则将所增加的位(bit)一部分存放指数部分,这样可以扩大数值范围 ...

请问VC++ 6.0 小数点后面显示的数字为什么会不正确
float能保证的有效位数最多是6~7位,完全能保证的是6位,double是15~16位,完全能保证的是15位。你再对照一下你测试的输出,就明白了,所以,在判断浮点数相等的时候,不能直接用==操作符,而是用一个可以接受的误差精度来表示,比如:define EPSILON 0.000001 \/\/根据精度需要 if ( fabs( fa ...

c语言双精度的问题
c语言中,常量可以被规定类型。你规定123.456是什么型,它就按什么型储存。只是单精度不够时显示不全。我想楼主问的应该不是规定好类型再调用sizeof 而是直接对123.456应用sizeof 。这时候你需要主要书上一个很小的细节:所有浮点型,在没有规定的情况下默认为 double 型。所以答案是:double 型 ...

VC++6.0中的%d和%f等有什么区别?
float n;n=2211.12f;int i;i=n;printf("n=%f",n);printf(" i=%d",i);} 如果这样写i是2211,这涉及浮点型和整形的转换问题,float占4字节,有的字节是表示整数位,有的小数位,具体可以看浮点型定义;int型也是4字节,但都是表示的是整数。用i=n赋值,就把浮点型对应的整数值传给整形...

VC++6.0中double的意思
float是单精度,double是双精度,double d=3.2; 是定义一个double类型的变量d且赋初值为3.2 x的值是1,不是1.2 y=(x+3.8)\/5.0;d是一个双精度浮点型数据,也就是一个实数,一个实数和一个整数相乘,结果应该是实数,但是printf给出的格式控制符是%d,也就是按整数输出。所以,最后输出的数...

求助,vc++6.0。求三角形面积,我是初学者,为什么无论输入什么数字都
定义的a、b、c、area都是double,双精度型 那么读取时都要用%lf 把你程序里 scanf("%f,%f,%f",&a,&b,&c);改为 scanf("%lf,%lf,%lf",&a,&b,&c);或者把双精度改为单精度 把 double a,b,c,s,area;改为 float a,b,c,s,area;...

C语言中浮点数float和double输出的问题
double有16到17位是可信的,再多了也是机器垃圾值。下面的代码可说明这一问题。float型x的值从第8位2开始就是垃圾值了,尽管要求输出小数点后10位;double型y的值从第18位起也是垃圾值,尽管要注输出了小数点后20位——这里全是0是碰巧,绝大多数情况下是乱七八糟的机器值。

printf函数输出单精度和双精度都是保留两位小数,为何结果不同???
这不是printf的问题。在VC++6.0下,无论是float带是double都得结果21.20。在C中,float都自动提升到double来计算的,只是最后输出时精度不同。

相似回答