提问者:小点点

c++,为什么std::cout打印浮动,双打和长双打到相同的十进制精度?


直觉上,我会认为长双位数比双位数有更多的小数点,双位数比浮点数有更多的小数点,但是,如果是这样,为什么std::cout会以相同的小数点精度打印出浮点数,双位数和长双位数,即使它们对所有基元数据类型都有重载?

C++源代码:

#include <iostream>

#define PI 3.1415926535897932384626433832;

int main()
{
    float f = PI;
    double d = PI;
    long double ld = PI;

    std::cout << f << std::endl;
    std::cout << d << std::endl;
    std::cout << ld << std::endl;

    return 0;
}

输出:

3.14159
3.14159
3.14159

共1个答案

匿名用户

对于所有类型的彩车,只有一个设置。 float,double和long double的精度不能不同。 所有类型的浮点数的默认精度为6。

从技术上讲,不可能为floatdouble设置不同的精度。

std::setprecision没有重载。 每个std::basic_ostream只能保存一个精度值。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++|std|cout|打印|浮动|双打|长|双|打到|十进制|精度)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?