长双精度打印不作为我用它初始化的常量

fpo*_*bin 0 c++ variables compilation

可能重复:
浮点不准确示例

我遇到了问题...当我编译src时,显示的变量与我初始化的变量不同,请参阅:

#include <iostream>

    using namespace std;

    int main()
    {
      long double mynum = 4.7;
      cout.setf(ios::fixed,ios::floatfield);
      cout.precision( 20 );
      cout << mynum << endl;
    }
Run Code Online (Sandbox Code Playgroud)

然后:

[fpointbin@fedora ~]$ ./a.out 
4.70000000000000017764
Run Code Online (Sandbox Code Playgroud)

怎么解决?我想"cout"节目4.700000 ......

Hen*_*olm 5

您的变量是long double,但文字的默认精度4.7仅为double.由于您将其打印为long double,因此解释选择使用足够的有效数字打印它以将其与相邻long double值区分开,即使这些相邻值不可能double.