|
[code]该函数实现保留小数后面指定位数的小数:
调用方式为:
Round(0.499,2)=0.50 Round(0.4949,2)=0.49
double Round(double _x, int decimalnum)
{
//参数:数、保留小数位数
//说明:该函数只关心保留小数位数的后一位,与sprintf函数相同
// 例: round(0.499,2)=0.50 round(0.4949,2)=0.49
double num,dec,factor;
dec = modf(_x,&num);//分切整数与小数部分(不直接用long型数参与计算,
// 避免运算溢出)
factor= pow(10.0f,decimalnum);//因子
dec *=factor;//小数点右移decimalnum位
dec +=_x>=0 ? 0.5:-0.5;//四舍五入运算
modf(dec,&dec);//取整
dec/=factor;//小数点左移decimalnum位
return num + dec;//合并返回值
}[/code] |
|