改变小数点后的位数

shengmingweilai 2012-08-14 10:02:29
将431726.175变为431726.18
使用什么方法函数及具体运用
谢谢了
...全文
251 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
勉励前行 2012-08-20
  • 打赏
  • 举报
回复
浮点数是有些麻烦的。舍入是由浮点控制器的控制字来控制的。

double d= 431726.175;
SetRoundMode(rmUp); //设置浮点数舍入方式
double d2 = RoundTo(d,-2);//d2 = 431726.18

一些十制字数,存成二进制时会得到很长的位,而浮点数是指定有效位数的,这样会造成浮点数天生的不精确。特别在四舍五入这种问题上。

C库的round , 也是受浮点控制器的控制字影响的。当你设定禁用硬件浮点计算时,结果可能不一样。
a__aaaaa 2012-08-19
  • 打赏
  • 举报
回复
似乎没有很好的回答呀。
lhy 2012-08-15
  • 打赏
  • 举报
回复
double d = 431726.175;
int i=(d+0.005)*100;
d=i/100.0;
_fastcall 2012-08-15
  • 打赏
  • 举报
回复
double d = 431726.175;
double d2 = floor( d * 1000.00f + 0.5) / 1000.00f;
dataxdata 2012-08-14
  • 打赏
  • 举报
回复
用sprintf(buf, "%.02lf", value)就可以格式化输出,不过由于十进制与二进制小数的转换精度问题,有时候会出现这种四舍五入的问题,可以参考一下这个链接
http://topic.csdn.net/u/20120618/10/30e64d70-fd9b-4485-a0b5-7633510cc092.html
shengmingweilai 2012-08-14
  • 打赏
  • 举报
回复
错误怎样解决:
【BCC32 Error】SChkData.cpp(457):E2268 Call to undefined function 'SimpleRoundTo'
缘中人 2012-08-14
  • 打赏
  • 举报
回复
奇怪,怎么都不对
double d= 431726.175;
double d2;
d2=SimpleRoundTo (d,-2);
d2 = FormatFloat("0.00",d).ToDouble();
d2=RoundTo(d,-2);
d2=(float)(Floor(d*100+0.5))/100.0 ;

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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