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次方分之几的数是精确存储为,其他的都是近似存储的 要想精确存储,只能用字符串 1楼 匿名用户 直接输出p就是一个长整型的数字,你定义的double 就是指的这个内存地址保存的数据的类型,输出这个数据则会带有小数点,输出地址不会 2楼 匿名用户 汗死。。。指针地址是用intger类型的。。占八位。。 跟你这个double有什么关系。。你打印下就知道了。用double来定义是因为... 1楼 匿名用户 float 和double不可以 剩下的几个都行 2楼 李 只能用于整型操作数,即char short int long类型 c语言位运算有什么作用 3楼 逍遙侠 可以用位运算做文件加密,比如一个文档,让其中的内容位运算,再打开就会显示一堆乱码,除非按特定的位运算变回来 c语言逻辑运...C语言中,定义double p的指针,那么p的类型是
c语言中可以进行位运算的数据类型有什么