开发笔记

  • 首页
  • 工具箱
三味线的博客
  1. 首页
  2. C++
  3. 正文

Qt(C++)进位规则(四舍六入五成双)

2019-04-15 5009点热度 24人点赞 2条评论

项目中偶然发现没有逢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便进位,最后的结果会偏大,而看奇偶进位从统计学上讲结果更准确一些。

标签: C++
最后更新:2020-06-06

三味线

不吃咸鱼的喵

点赞
< 上一篇
下一篇 >

文章评论

  • mengkun

    试试 9.975 和 9.125 这两个数 :razz:

    2020-09-29
    回复
    • 三味线

      @mengkun 大哥知道是怎么回事吗 :wink:

      2020-12-04
      回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    Captcha Code

    COPYRIGHT © 2022 voidcat.cn. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    蜀ICP备18010095号-1