项目中偶然发现没有逢5进位,原来使用了新的进位规则:四舍六入五成双,而且貌似很多开发工具(环境)使用新规则已经很久了。(¬_¬)
用代码来说明:
double a=3.444; double b=4.446; double c1=3.435; double c2=3.445; double c3=3.4351; double c4=3.4451; QString strA=QString::number(a,'f',2); QString strB=QString("%1").arg(b,0,'f',2);//另一种输出相应精度值的方法 QString strC1=QString::number(c1,'f',2); QString strC2=QString::number(c2,'f',2); QString strC3=QString::number(c3,'f',2); QString strC4=QString::number(c4,'f',2); qDebug()<<"a: "<<a<<"->"<<strA; qDebug()<<"b: "<<b<<"->"<<strB; qDebug()<<"c1: "<<c1<<"->"<<strC1; qDebug()<<"c2: "<<c2<<"->"<<strC2; qDebug()<<"c3: "<<c3<<"->"<<strC3; qDebug()<<"c4: "<<c4<<"->"<<strC4;
输出:
a: 3.444 -> "3.44" //4舍; b: 4.446 -> "4.45" //6入; c1: 3.435 -> "3.44" //5看奇偶,奇数(3)进位; c2: 3.445 -> "3.44" //5看奇偶,偶数(4)不进位; c3: 3.4351 -> "3.44" //5后面还有非0数,不管奇偶都进位; c4: 3.4451 -> "3.45" //5后面还有非0数,不管奇偶都进位;
四舍六入五成双是一种比较精确比较科学的计数保留法。传统四舍五入逢5便进位,最后的结果会偏大,而看奇偶进位从统计学上讲结果更准确一些。
文章评论
试试 9.975 和 9.125 这两个数
@mengkun 大哥知道是怎么回事吗