保留小数点后两位不用四舍五入

fanleicge 2013-03-21 01:26:08
我想只保留double 的小数点后两位,不要四舍五入。
((int)(dtemp *100))/100.0;这样的话考虑到int范围可能会溢出。
谁有好的办法。
...全文
1447 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
骚然勿外 2015-01-10
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
#include <math.h>
double d;
d=floor(d*100.0)/100.0;
这样对负数也有效吗???
赵4老师 2013-03-21
  • 打赏
  • 举报
回复
引用 2 楼 starytx 的回复:
printf("%.2f" ,dtemp); ?
这样是带四舍五入的。
//Round(1.234,2) = 1.23
//Round(1.234,0) = 1.0
//Round(123.4,-1) = 120.0
double Round(double dVal, short iPlaces) {
    double dRetval;
    double dMod = 0.0000001;
    if (dVal<0.0) dMod=-0.0000001;
    dRetval=dVal;
    dRetval+=(5.0/pow(10.0,iPlaces+1.0));
    dRetval*=pow(10.0,iPlaces);
    dRetval=floor(dRetval+dMod);
    dRetval/=pow(10.0,iPlaces);
    return(dRetval);
}

double round(double dVal, short iPlaces) //iPlaces>=0
{
    unsigned char s[20];
    double dRetval;

    sprintf(s,"%.*lf",iPlaces,dVal);
    sscanf(s,"%lf",&dRetval);
    return (dRetval);
}
赵4老师 2013-03-21
  • 打赏
  • 举报
回复
#include <math.h>
double d;
d=floor(d*100.0)/100.0;
starytx 2013-03-21
  • 打赏
  • 举报
回复
printf("%.2f" ,dtemp); ?
aozhi 2013-03-21
  • 打赏
  • 举报
回复
浮点数这么做没意义。

70,023

社区成员

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

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