c语言整形除法是五舍六入吗,四舍六入五成双 - C/C++论坛 - 51CTO技术论坛_中国领先的IT技术社区...

复制内容到剪贴板

代码:#include

using namespace std;

#define FLENGTH 1000;        //宏定义保留3位小数

double fun(double ldBuf);        //四舍六入五成双函数

int main(void)

{

double ldTemp=9.824963;

double ldRet;

//大于5

ldTemp=9.824963;

ldRet = fun(ldTemp);

printf("%.6lf ---- %.3lf\n",ldTemp,ldRet);

//小于5

ldTemp=9.824363;

ldRet = fun(ldTemp);

printf("%.6lf ---- %.3lf\n",ldTemp,ldRet);

//5后面跟偶数

ldTemp=9.824563;

ldRet = fun(ldTemp);

printf("%.6lf ---- %.3lf\n",ldTemp,ldRet);

//5后面跟奇数

ldTemp=9.824533;

ldRet = fun(ldTemp);

printf("%.6lf ---- %.3lf\n",ldTemp,ldRet);

printf("\n");

system("pause");

return 0;

}

/*

函数名称:fun

函数作用:实现四舍六入五成双

函数参数:

double        ldBuf        需要进行四舍六入五成双加工的数值

函数返回值:

double        进行四舍六入五成双加工后的数值

*/

double fun(double ldBuf)

{

double ldRet;

char chBuf[20];

char chRet[20];

double ldTemp;

int nPos;

char chTemp;

//printf("*********************************\n");

ldTemp = ldBuf * FLENGTH;        //保留小后3位,相当于先*1000

//printf("ldTemp --- %lf ; ldBuf ---- %lf \n",ldTemp,ldBuf);

//再根据小数点后的位数区别

sprintf(chBuf,"%lf",ldTemp);        //转换成字符串进行处理

nPos = strcspn(chBuf,".");

//printf("chBuf --- %s\n",chBuf);

chTemp = chBuf[nPos+1];        //取小数点后的一位数

if ( chTemp

{

//小于5,舍去,取小数点前的数据

strncpy(chRet,chBuf,nPos);

ldRet = atof(chRet);

}

else

{

if(chTemp>'5')

{

//大于5,进位

strncpy(chRet,chBuf,nPos );

ldRet = atof(chRet) +1 ;

}

else

{

//等于5,按规则,根据5后面的一位进行判断

chTemp = chBuf[nPos+2];

if( (chTemp%2)==0)

{

//5后面跟的是偶数位,末位不变

strncpy(chRet,chBuf,nPos );

ldRet = atof(chRet);

}

else

{

//5后面跟的是奇数位,末位加1

strncpy(chRet,chBuf,nPos );

ldRet = atof(chRet) +1;

}

}

}

//printf("前面的%lf\n",ldRet);

ldRet = ldRet / FLENGTH;

//printf("后面的%lf\n",ldRet);

//printf("*********************************\n");

return ldRet;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值