
正文
c语言函数不要四舍五入的简单介绍
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何让C语言不出现4舍5入 我菜鸟...
题目要求的结果有个特性c语言函数不要四舍五入,就是1.4要当成1来看,1.8也要当成1来看。
其实就是要求,如果得到一个浮点数x,要得到结果的整型数据y(可兑换几张10元),y是小于或者等于x的最大整数(y = x MAX(y))。
那么可以定义一个宏(或者c语言函数不要四舍五入你也可以定义一个相同功能的函数),如下:
#define Round(x) (int)(x-0.5)
传入值x为浮点型,计算得到一个小于或者等于x的最大整数。
输出的时候以整型(%d)的格式输出,使得,若有16元,只能兑换1张10元。
或者你可能想要的结果跟上述说不太一样,你可能是想,我要兑换成1.6张10元的。那其实很简单,只要把输出格式换成"%2.1f"即可,表示显示2位有效数字(包括小数部分),其中只留有1位小数。那么显示结果就是1.6c语言函数不要四舍五入了
相关问答
Q1: C语言中如何将一个小数取整,不四舍五入?
有差别,第一个不会做四舍五入的,它精确的进行了计算,第二个是正确的,进行了舍运算,这个运算是在(int)的时候利用类型转换做的
如果你输出的结果是一样的,我怀疑是你在输出的时候指定了输出精度,你检查一下你的printf或者cout
Q2: c语言里用%f输出时能否避免四舍五入?
单纯用%f无法避免四舍五入。要避免四舍五入,需要自行编写函数。
实现方法有很多种,以常用两种举例说明:
1、
利用取整时,强制截取整数部分,取出要输出的整数部分和小数部分。
如保留三位小数,可以写作如下代码:
double v=123.456789;//要输出的数。
int a,b;//整数部分和小数部分。
a=(int)v;//取整,得到整数部分。
b=(int)((v-a)*1000);//得到三位小数部分。
printf("%d.%03d\n", a, b);//分别输出小数部分和整数部分。
2、先输出到字符串,然后截取需要长度的小数部分,并输出。与上例相同功能的代码如下:
double v=123.456789;//要输出的数。
int i;//用作计数。
char s[100];//字符串缓存。
sprintf(s, "%lf", v);//将v存到字符串中,执行后s="123.456789"。
for(i = 0; s[i]!='\0'; i ++)
if(s[i] == '.') break;//通过循环,找到小数点的位置。
s[i+4] = '\0'; //将小数点后第4位赋值为结束符,这样就实际保留了三位小数。此时s="123.456"
printf("%s\n",s);//输出结果。
Q3: 在C语言中如何不四舍五入保留小数
float a=2.556;printf("%.2f\n",a);%.2fc语言函数不要四舍五入的意思就是保留两位小数另外c语言函数不要四舍五入,%6.2表示c语言函数不要四舍五入,整个数的宽度(包括小数点)为6位c语言函数不要四舍五入,小数部分(不包括小数点)占两位。若整个数的宽度不足六位,则左边补空格c语言函数不要四舍五入;超过六位则忽略6。%-6.2f与上面的含义基本相同,只是当整个数的宽度不足六位时是右边补空格
Q4: C语言这题如何不四舍五入
int(1000 * num)/1000.0
/*
r = 1
h = 1
底面积 = 3.141
体积 = 3.141
Press any key to continue
*/
#include stdio.h
#define PI 3.14159265f
int main() {
float r,h,s,v;
printf("r = ");
scanf("%f",r);
printf ("h = ");
scanf("%f",h);
s = PI*r*r;
v = s*h;
printf("底面积 = %.3lf\n",int(1000 * s)/1000.0);
printf("体积 = %.3lf\n",int(1000 * v)/1000.0);
return 0;
}
c语言函数不要四舍五入的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、c语言函数不要四舍五入的信息别忘了在本站进行查找喔。






