小数点四舍5入,怎么实现或者有什么函数 比如:123.135保留两位小数,小数点四舍5入 后变成 123.14 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ceilfloorc runtime lib 1.round(double,int )四舍五 2.d.ToString("f2");//结果取小数点后两位,且四舍五入 (d-0.005).ToString("f2");//直至保留小数点前两位,不四舍五入 long Round(double x) { if (x>=0) return (long) (x+0.5); else return (long) (x-0.5);}void main(){ double i = 123.135; Round(i);} 123.135 * 100 = 12313.5(int)(12313.5 + 0.5) = 12314 //取整12314/100 = 123.14完毕:) CString str;str.Format(_T("%6.2f"),123.345); //不能四舍五入 得到 123.34str.Format(_T("%6.2f"),123.346); //就可以四舍五入 得到 123.35什么原因呢??????? 手动控制浮点数小数点后有效数字的位数 http://blog.vckbase.com/panic/archive/2005/10/31/14326.html 如果只是输出,可以使用setprecision(n)控制输出数字个数,也可以使用setprecision(n)与setiosflags(ios::fixed)合用,控制小数点右边的数字个数;如:cout<<setiosflags(ios::fixed);cout<<setprecision(n)<<value;如果要得到四舍五入之后的值,那就写个函数好了如:int temp = (int)(x * 100.) + 0.5; y = temp / 100.; CString.Format(_T("%.ng"), value),其中value为浮点型或者整形数据,n为位数;比如:disp.Format(_T("%.15g"), result); 参考如下:double round(double v, int len){ if (len<0) { len=0; } double result=1; while(len--) { result*=10; } return int(v*result+0.5)/result;} float a; CString m_value_a; m_value_a.Format("%f",a);//"%f"可以修改 //四舍无入的完整定义:四舍五入,奇进偶不进//解释://如果舍去部分>0.5,则进位,<0.5,则舍去。//如果正好等于0.5,看要保留的最后一位是奇数还是偶数,如果是奇数,则进位,偶数则舍去。//这是为了进和舍各占50%的几率。 #define ROUND(d) ( ((d) >= 0) ? ((d) + 0.5):((d) - 0.5) ) 关于四舍五入,推荐看一下下面的文章:http://weaver.blogbus.com/ 如何在vc中执行sql脚本 如何判断同一个应用程序是不是已经正在运行了 如何为listbox添加双击事件 求救!!程序报错:必需的资源无法得到!! 如何获得自己创建的无模式对话框的句柄? 如何在内容中创建一个 memDC, 并向此DC中输出一些文字,再获得一块区域的像素。? 怎样才能给edit box 控件添加右键弹出菜单 如何让编辑框只能输入一个字符 求手写中文字符的样本集 问一个数据库编程的问题 vc自定义的类怎么转换成适合网络传输的字符串 我把语句换了个地方怎么就不行了呢?-----在线求解
floorc runtime lib
2.d.ToString("f2");//结果取小数点后两位,且四舍五入
(d-0.005).ToString("f2");//直至保留小数点前两位,不四舍五入
long Round(double x)
{
if (x>=0)
return (long) (x+0.5);
else
return (long) (x-0.5);
}void main()
{
double i = 123.135;
Round(i);
}
什么原因呢???????
http://blog.vckbase.com/panic/archive/2005/10/31/14326.html
如:cout<<setiosflags(ios::fixed);
cout<<setprecision(n)<<value;如果要得到四舍五入之后的值,那就写个函数好了
如:
int temp = (int)(x * 100.) + 0.5;
y = temp / 100.;
比如:disp.Format(_T("%.15g"), result);
double round(double v, int len)
{
if (len<0)
{
len=0;
} double result=1;
while(len--)
{
result*=10;
}
return int(v*result+0.5)/result;
}
CString m_value_a;
m_value_a.Format("%f",a);//"%f"可以修改
//四舍无入的完整定义:四舍五入,奇进偶不进
//解释:
//如果舍去部分>0.5,则进位,<0.5,则舍去。
//如果正好等于0.5,看要保留的最后一位是奇数还是偶数,如果是奇数,则进位,偶数则舍去。
//这是为了进和舍各占50%的几率。