Qt现在是四舍六入五成双,要想四舍五入得自己想办法,实现如下:
#include <QtMath> #include <QDebug> double c1=3.435; double c2=3.445; double c3=3.4351; double c4=3.4451; double c5=-3.445; qDebug()<<c1<<"->"<<getPrecision(c1,2); qDebug()<<c2<<"->"<<getPrecision(c2,2); qDebug()<<c3<<"->"<<getPrecision(c3,2); qDebug()<<c4<<"->"<<getPrecision(c4,2); qDebug()<<c5<<"->"<<getPrecision(c5,2); double getPrecision(double value,int pre) { double offset=0.5; if(pre<1) return value; double prod=qPow(10.0,pre); if(value<0) offset=-offset; int tmp=(int)(value*prod+offset); double ret=tmp/prod; return ret; }
输出:
3.435 -> 3.44 3.445 -> 3.45 3.4351 -> 3.44 3.4451 -> 3.45 -3.445 -> -3.45
思路:
1.小数点后移到要四舍五入的地方;
2.将数据加上0.5(负数减),则小数点后面为5以上就会进位;
3.转成int,利用向下取整去掉小数点后面的数;
4.前移小数点,得到四舍五入后的值;
文章评论