四舍五入

来源:互联网 发布:基督山伯爵 知乎 编辑:程序博客网 时间:2024/04/27 05:46
const double ExtDecimalArray[9]={ 1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0 };double NormalizeDouble(const double val,int digits) {if(digits<0) digits=0;if(digits>8) digits=8;//----const double p=ExtDecimalArray[digits];return((val>=0.0) ? (double(__int64(val*p+0.5000001))/p) : (double(__int64(val*p-0.5000001))/p));}

五舍六入,digits为精确到小数点后第几位。

const double ExtDecimalArray[9]={ 1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0 };double NormalizeDouble(const double val,int digits) {if(digits<0) digits=0;if(digits>8) digits=8;//----const double p=ExtDecimalArray[digits];return((val>=0.0) ? (double(__int64(val*p+0.4000001))/p) : (double(__int64(val*p-0.4000001))/p));}

思路是,要保留n位,就先将值乘以10的n次方,加上0.5后取整,再除以10的n次方。

例如,1.23456要保留两位小数,乘以10的2次方后变成123.456,加上0.5后变成123.956,取整后变成123,然后除以100变成1.23

0 0
原创粉丝点击