只要两位小数话样做: double d = 3.1253 d *= 100; d = ( d + 0.5 ) / 100.0;
那两位给的方法,我认为根本不对,最终的结果还都是有很多为小树 我觉得应该这样: double d = 3.1253 d *= 100; d = ( d + 0.5 ) / 100.0;sprintf(str, "%4.2f", d); d= atof(str);
double diaoyong(double d) { double x;
int a; d *= 100; d=( d + 0.5 ) / 100; d*=100; a=d; d=a; d=d/100.0; x=d; return x; cout<<x<<'\n'<<a; }兄弟你试 试 看看行行不行我是对二楼的补充
怎么会有现成的函数呢? SEA373的很不错的,你用用吧
有个问题,如果是负数 -3.009 那么四舍五入后是 -3.01 还是 -3.00? 如果是 -3.01应该是:double d=3.1253; int sig = (d>=0) ? 1 : -1; int dat = (int)(fabs(d) * 100 + 0.5); d = dat / 100;
忘了 ^-^ d *= sig;
to handpoint(小新): 不错 你说的我没考虑过 怎么会出现这样的情况的啊
去论坛查了查大家比较推崇 #include "math.h" double round(double num , int i) {return int(num*pow(10,i)+0.5)/float(pow(10,i));} num要进行四舍五入的数,i保留位数
d+=0.005
double d = 3.1253
d *= 100;
d = ( d + 0.5 ) / 100.0;
我觉得应该这样:
double d = 3.1253
d *= 100;
d = ( d + 0.5 ) / 100.0;sprintf(str, "%4.2f", d);
d= atof(str);
{ double x;
int a;
d *= 100;
d=( d + 0.5 ) / 100;
d*=100;
a=d;
d=a;
d=d/100.0;
x=d; return x;
cout<<x<<'\n'<<a;
}兄弟你试 试 看看行行不行我是对二楼的补充
SEA373的很不错的,你用用吧
如果是 -3.01应该是:double d=3.1253;
int sig = (d>=0) ? 1 : -1;
int dat = (int)(fabs(d) * 100 + 0.5);
d = dat / 100;
d *= sig;
#include "math.h"
double round(double num , int i)
{return int(num*pow(10,i)+0.5)/float(pow(10,i));}
num要进行四舍五入的数,i保留位数