关于"四舍五入"的一个小小算法问题

网事随逢 2002-08-02 07:49:34
1.问题:比如算账,有时候我要精确到100.25元,有时候要精确到100.24元.
有时候需要将100.245精确到100.24,有时候是100.25;
有时候将100.24精确到100.2,有时候精确到100.3
2.Unix/c(hp)标准c下提供了ceil,floor,等函数,
3,我现在想写一个公用函数实现参数化选择.
我现在实现以上功能是写了两个函数分别实现,但是第二个不能实现参数化配置
如果你有现成的解答,如果可以写成一个函数 清赐教,给分...
我的两个函数是1.float myceilf(double myNum,double i,int j)
2.float mySiSheWuRu(double myNum,int i)
i代表我要保留的小数位,myNum 达标输入的数据.
...全文
75 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
网事随逢 2002-08-09
  • 打赏
  • 举报
回复
结贴了
sans 2002-08-04
  • 打赏
  • 举报
回复
下面是我实际编程时使用的:
//将一个浮点数保留几位小数四舍五入
DOUBLE Round( DOUBLE db, int n )
{
char szParm[10];
char szdb[40];
sprintf( szParm, "%%20.%df", n );
sprintf( szdb, szParm, db );
return atof( szdb );
}

//将一个浮点数保留几位小数不四舍五入
DOUBLE Round0( DOUBLE db, int n )
{
char szParm[10];
char szdb[40];
sprintf( szParm, "%%20.%df", n+1 );
sprintf( szdb, szParm, db );
char * p = strchr (szdb, '.' );
if( p != NULL) p[n+1] = 0;
return atof( szdb );
}
网事随逢 2002-08-04
  • 打赏
  • 举报
回复
makefile:
ALL=z.c
OBJ=$
LIB=$


cc -o z -lm2.2.5.so z.c

grep "ceil" *

grep "floor" *
网事随逢 2002-08-02
  • 打赏
  • 举报
回复
问题:比如算账,有时候我要精确到100.25元,有时候要精确到100.24元.
有时候需要将100.245精确到100.24,有时候是100.25;
有时候将100.24精确到100.2,有时候精确到100.3
coldcrane 2002-08-02
  • 打赏
  • 举报
回复
float myceilf(double myNum,double i,int j)
这里的参数是什么意思?
为什么float和double又是什么意思?

70,031

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧