C ++在double和float中输出不同的输出

这个问题在这里已经有了答案:

  • float和double有什么区别? 11个答案

  • 33.3没有精确的有界二进制表示,因此将其转换为floatdouble float舍入。

    float有一个23位的尾数,相当于精度的6.92十进制数字; 在那里你要求打印8位数字,这比可用的精度要高,因此会显示效果或四舍五入。

    double代替52位尾数,相当于15.65位小数; 8位有效数字打印保持良好,因为您仍然打印好数字,不受四舍五入的影响。


    为了更容易在我们心爱的基地中消化例子10:想象你有一个精度为15位的十进制数据类型,并且你想在其中存储1/3。 你能做的最好的就是存储0.333333333333333; 他们将其复制到一个具有6位精度的数据类型中:它变为0.333333。

    现在,如果打印第一个值为8位十进制数字,则得到0.33333333,而第二个值为0.33333300 - 因为您已经在转换中丢失了其他数字。

    这就是发生在这里,但用二进制浮点数而不是小数点。


    这是float和double的区别的一个很好的答案。

    float和double有什么区别?

    默认情况下,任何幻数(作为程序中的33.30)都会以双精度处理。 当你float a = 33.30; ,发生错误。

    链接地址: http://www.djcxy.com/p/78617.html

    上一篇: C++ different output in double and float

    下一篇: Float and Double value creating confusion in c