A. c语言编程中怎么自动去掉浮点数小数点后没用的0。
#include<stdio.h>
int main()
{
float a=3.123000;
printf("%g ",a);//自动省略后面无意义的0
return 0;
}
(1)删除小数c语言扩展阅读
C语言浮点数
浮点数的值等于尾数乘以 2^x。读者应该注意,上图是二进制分数,因此 0.1表示 1/2。为了方便理解,我们可以将其与十进制的小数对应起来:十进制的 0.1 等于 1*10^-1,所以二进制的 0.1 等于1*2^-1,也即 1/2。
“尾数+指数”模式存储浮点数可能有一点问题,例如:2x10^-1=0.2x10^0=0.02x10^1,依此类推。同样一个数字可能有多种“尾数+指数”的表示方法,而同时兼顾多种表示方法势必会造成巨大的浪费。
B. C语言中消除小数后无效的0,如0.5而非0.500000
#include <stdio.h>
#include <stdlib.h>
void kill0(float f)
{
float yu,j;
yu=f-(int)f;
printf("%f",yu);
for(int i=1;i<=100000;i*=10)
{
j=yu;
j*=i;
// 当 f不为纯小数时,其后若干位将枯洞简出现随机小数使得if(j-(int)j)一直为真
if(j-(int)j)
continue;
else
{
switch (i)
{
case 1:{printf("%.0f",f);break;};
case 10:{printf("%.1f",f);break;};
case 100:{printf("%.2f",f); break;};
case 1000:{printf("%.3f",f);break;};
case 10000:{printf("%.4f",f);break;};
case 100000:{printf("%.5f",f);break;};
case 1000000:{printf("%.6f",f);break;};
case 10000000:{printf("%.7f",f);break;};
default: printf("error");
}
break;
};
}
}
int main()
{
double a,b,c;
char fh,pd;
printf("这是一个简易计算器\n请输入你希望计算的式子如:45+62,并按回车键结束\n");
goto loop;
loop: scanf("%lf%c%lf",&a,&fh,&b);
switch(fh)
{
case 43:
c=a+b;
kill0(c); break;
case 45:c=a-b;
kill0(c); break;
case 42:c=a*b;
kill0(c); break;
case 47:{
if(b==0){ printf("除数不为零,请重新输入"); goto loop;}
else c=a/b;
kill0(c); break;}
}
printf("是否还需要计算?(Y/N)");
getchar();
scanf("%c",&pd);
if(pd=='没裤Y'||pd=='y') goto loop;
return 0;
}
我是楼主,忘上代码了,这其实是个颤伍简单的计算器
C. C语言 去掉小数点后面无效0
printf("BMI:%g\n",c); -------不是%g¥n
printf("标准体重:%g\n",d);
这是没有问题的。是你的程序中有错,程序没有编译成功,仍旧运行旧的程序造成的。
D. C语言中如何处理小数
1.C语言的小数都是浮点数。浮点数属于floating binary point types,也就是说都double型的数值在相加减的时候,会将数值转换成二进制的数值如10001.10010110011这种表示发再做相加减,但是在转换成二进制代码表示的时候,存储小数部分的位数会有不够的现象,即无限循环小数,这就就会造成小数相加后结果会有微差距。
2.浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。
3.浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。
一个浮点数a由两个数m和e来表示:a = m × b^e。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。
E. C语言程序,运行结果如下:如何去除小数点
判断结果是否为整数:// 将结果小数部分截断,仍和结果相等,则说明结果为整数。
if ( (long)(result) == result )
printf("%d",(long)(result));
仅做一个粗略的判断。
F. c语言去掉小数部分不进位
可以通过sprintf函数实现数字四舍五入转字符串,通过处理字符串,实现所需功能,具体代码,#includeintmain(intargc,char*argv[]){charbuffer[40];//存储float数据floatfnum=12.396;//待测试数据sprintf(buffer,"%.2f",fnum);//四舍五入转化为字符串inti=0;for(;*(buffer+i)!='.';i++);//统计小数点的位置if(*(buffer+i+2)=='0')//处理小数点后第扰困二位字符,如果为0,替换为'\0'*(buffer+i+2)='\0';printf("四舍五入后,数据变为:%s\者旁n,",buffer);return0;}float为单精度浮点型数据,在TurboC中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供7位有效数字。建议输入采用字符首李橡串形式,这样统计不会出偏差,使用数字时,使用doubleatof(constchar*str)函数转换;如果使用数字,系统会自动补0的,与实际期望不符。
G. C语言中如何在除法事结果不保留小数 并将这个结果带入下次运算 比如7/2=3.5 去掉小数=3
要让结果不保留小数,可以进行强制类型转换,
例如 a=3.12,强制转换(int)a=3
想把结果带入键肆下次运算
可以写成 c=b+(int)a;
这样既去梁李了小数也可以把结果带入下次运算了
希橡亮迟望回答对你有帮助!
【原创答人】
H. C语言,将double数据输出时,如何去掉小数位多余的0
double a = 1.001;
printf("%lf",a);//会输出1.001000,怎样才能输出1.001
通过在%与lf之间加上.d(此处的d为十进制正整数)来控制输出小数的位数,以此来控制输出数据的精度,
比如:%.3lf表示输出的数据有3位小数
%.5lf表示输出的数据有5位小数
%lf默认输出6位小数 ,所以本来a=1.001,结果输出1.001000
I. c语言怎么得去掉小数点后的数
您好,我是软件之家的♂北极熊熊,很高兴为您解答。 ================================================================================== 代码如下: #include<stdio.h> void main() { double x,temp; int a; scanf("%lf",&x); temp=x; a=int(temp); while(a!=temp) { temp=temp*10; a=int(temp); } printf("%d\n",a); } ================================================================================== 如您满意,谢谢五星采纳~~~~~↖(*^ω^*)↗
J. C语言我想让输出结果在整数的时候去掉小数部分,怎么弄
一个基本错误,for循环的循环变乱虚量本来就不该哗消燃是float,i<=2再i是float时是非桥埋常不靠谱的
你既然想去掉就不要用%f,应该用%d
printf("%d -> ", (int)i);