c语言float类型保留几位啊怎么确定

2021-03-10 18:46:09 字数 1997 阅读 7449

1楼:徜逸

float类型默认保留小数点后6位,若是要输出一位或者其他位数,可以按照以下形式进专行输出:

printf("%.(这里输入属要输出的位数)f",x);

如输出一位:printf("%.1f",x);

c语言浮点类型的精确位数

实例#include

#include

int main()

2楼:匿名用户

在c语言中来,float类型的数据默认保源留小数点后6位,不足6位的以0补齐,超过6位按四舍五入截断。最多能保留7位有效数字,能绝对保证6位有效数字。

详细可参考博文:网页链接

**中的2.0其实就是2.000000,3.0其实就是3.000000,float类型的默认保留小数点后6位;

100/40结果应该是2.5,书中的2.0是侧重和2.

5做区别,不是和2.000000做区别。同样,下面的3.

0是要和3.14159做区别,而不是要和3.000000做区别。

所以,**中的2.0其实就是2.00000,3.0其实就是3.000000。

3楼:科技数码答疑

float(也就是单精度浮点),默认有效位数7位。图中的2.000000,有效数字就是7位

单精度,float,32位,有效位数为7位

双精度,double,64位,有效位数15位

4楼:匿名用户

%.2f就是保留小数点后两位。数字代表保留几位。

5楼:匿名用户

i和j都是int型,两个int型相除结果保留整数部分,即2,但是f是float型,结果保留6位

6楼:郑原俊

以float型输出时是保留小数点后6位

c语言 如何确定输入的float型的小数点位数

7楼:匿名用户

确定输入的float型的小数点位数,可以通过sprintf函数实现数字转字符串,处理字符串,判断小数版点“.”后的位权数实现,但由于系统中float存在7位有效数字(含小数点,即小数点后有6位小数),使得系统或者补0,或者截断,导致统计与实际输入数字的位数不符。

//主要**

char buffer[40];

float fnum=12.38;

sprintf(buffer,"%f",fnum);//获得字符串int i=0,num=0;

for(;*(buffer+i)!='\0';i++)float 为单精度浮点型数据,在turboc中单精度型占4个字节(32位)内存空间,其数值范围为3.4e-38~3.

4e+38,只能提供七位有效数字。建议输入采用字符串形式,这样统计不会出偏差,使用数字时,使用double atof( const char *str )函数转换。

8楼:

输入后,bai十进制数变2进制。十进制小

du数zhi 化 2进制小数 常常 化不尽,所dao以用 大于小于回来判断float型是否正好答大于小于某数值是困难的。

简单办法是用字符串方法读入,直接判断字符串。

float i;

char str[32];

int j,l;

scanf("%s",str);

sscanf(str,"%f",&i);

l = strlen(str);

然后查找小数点,for (j=0;j

然后从最小的一位 str[l-1] 起循环,找到第一个不是 0 的位置。 if (str[k] !='0')

算出位数。

9楼:匿名用户

楼上说的很对,要是你明白小数的二进制存储方式,你就知道了,只是近似存储,除非是0.5,0.25,0.75等这些2的n次方分之几的数是精确存储为,其他的都是近似存储的

要想精确存储,只能用字符串

C语言中,定义double p的指针,那么p的类型是

1楼 匿名用户 直接输出p就是一个长整型的数字,你定义的double 就是指的这个内存地址保存的数据的类型,输出这个数据则会带有小数点,输出地址不会 2楼 匿名用户 汗死。。。指针地址是用intger类型的。。占八位。。 跟你这个double有什么关系。。你打印下就知道了。用double来定义是因为...

c语言中可以进行位运算的数据类型有什么

1楼 匿名用户 float 和double不可以 剩下的几个都行 2楼 李 只能用于整型操作数,即char short int long类型 c语言位运算有什么作用 3楼 逍遙侠 可以用位运算做文件加密,比如一个文档,让其中的内容位运算,再打开就会显示一堆乱码,除非按特定的位运算变回来 c语言逻辑运...