重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
四舍五入算法:如果要求精确到小数点后面的第n位,则需要对第n+1位进行运算。方法是将该小数乘以10的n+1次方后加5,然后除以10并强制转换变量类型为长整型,再将该数除以10的n次方,同时强制转换类型为浮点型。\x0d\x0a代码实现如下:\x0d\x0along t; /*定义长整型变量t*/\x0d\x0at=(h*10n+1+5)/10; /*对h进行操作,得到值浮点型,t取值时取整数部分。10n+1为要扩大的倍数*/\x0d\x0ah=(float)t/10n; /*将t缩小10n倍,并转换成浮点型*/
成都创新互联是一家集网站建设,玉屏企业网站建设,玉屏品牌网站建设,网站定制,玉屏网站建设报价,网络营销,网络优化,玉屏网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1、首先打开DEV C++软件,点击“新建源代码”,在编辑页面输入以下代码。
2、因为题目要求我们先输入一个整数,所以在定义变量时,就应该将其定义为整数型,注意,在输入,输出函数中,整数型对应的是“%d”。
3、接下来就要对输入的整数进行判断,在C语言中,if是判断语句,所以用它来对整数进行判断。if(a%2==0)是计算机认可的判断代码。
4、因为需要进行结果的输出,不单单是判断而已,所以要结合else来结合进行判断,对结果进行输出。
5、最后,点击“运行”,在弹出的输入页面之后,在其输入一个整数,点击回车,即可得出想要的结果了。
方法一:
#includestdio.h
int main()
{
double d1,d2,d3;
d1=-3.1415926;
d2=(int)(d1*10+0.5)*0.1;
printf("d1=%f,保留一位小数的结果为:%.1f\n",d1,d2);
d3=(int)(d1*1000+0.5)*0.001;
printf("d1=%f,保留三位小数的结果为:%.3f",d1,d3);
总结四舍五入保留n为小数
(int)(x*10的n次方+0.5)*10的负n次方;
其次这个方法对负数无效;如果非要用可以先取正数部分算,最后加上负号
}
方法二:
使用round()函数。
#include"stdio.h"
#include"math.h"
void main()
{
float x;
scanf("%f",x);
int y = round(x);
printf("%d",y);
}
扩展资料:
C语言编写注意事项:
1、%运算符不能应用与float或double类型。
2、char类型转换为int型时, 无法判断它是signed还是unsigned.这样其结果有可能为负数, 因此转换时尽量指定signed和unsigned限制符。
3、++i与i++不同之处: ++i是先+1在使用, i++是先使用i在递加1。
4、三元运算符"?:" 第一个表达式的括号不是必须的,但是由于三元表达式的优先级非常低,我们还是将第一个表达式用()括起便于阅读和理解。
5、C语言中可以使用递归 (即函数调用自身函数), 其不节省储存器开销也不加快执行速度, 只是使程序紧凑便于理解。
c99 开始有 round() 函数处理 四舍5入。
函数原型:
double round (double x);
float roundf (float x);
long double roundl (long double x);
C++11 有 double round (T x);
----
低于c99 的可以自己写,例如: 绝对值+0.5,
绝对值函数原型:
double fabs (double x);
float fabs (float x);
long double fabs (long double x);
正数和负数的 四舍5入 有天花板和地板的 处理,由你自己选择(上靠,下靠) 。
天花板和地板函数原型:
double ceil (double x);
float ceil (float x);
long double ceil (long double x);double floor (double x);
float floor (float x);
long double floor (long double x);
# incloud stdio
int main(void)
{
float a ;
scanf(“%f”,a);
a=(int)(a*1000+0.5)/1000.0;
printf (“%0.3f”,a);
return 0;
}
扩展资料:
其他方法实现四舍五入:
int myround(double indata,int precision,double * outdata)
{
long pre = 1,i;
for(i = 0; i precision; i ++)pre = pre * 10;
if(cy_FloatCompare(indata,0.00) 0)
* outdata =(int)((indata * pre)+0.5)/100.00;
else
* outdata =(int)((indata * pre)-0.5)/100.00;
return 0;
}
// cy_FloatCompare是浮点数与0比较的函数,假设它存在。返回值与strcmp相同。
# incloud stdio
int main(void)
{
float a ;
scanf(“%f”,a);
a=(int)(a*1000+0.5)/1000.0;
printf (“%0.3f”,a);
return 0;
}
扩展资料:
其他方法实现四舍五入:
int myround(double indata,int precision,double * outdata)
{
long pre = 1,i;
for(i = 0; i precision; i ++)pre = pre * 10;
if(cy_FloatCompare(indata,0.00) 0)
* outdata =(int)((indata * pre)+0.5)/100.00;
else
* outdata =(int)((indata * pre)-0.5)/100.00;
return 0;
}
// cy_FloatCompare是浮点数与0比较的函数,假设它存在。返回值与strcmp相同。