Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么输出与我预期的不同?_C++_Codelite - Fatal编程技术网

C++ 为什么输出与我预期的不同?

C++ 为什么输出与我预期的不同?,c++,codelite,C++,Codelite,我运行了这段代码,但输出与我预期的不同。 输出: c = 1324 v = 1324.99 我希望v的输出应该是1324.987。为什么v中的数据与输出不同 我在Windows832上使用代码lite #include <iostream> using namespace std; int main() { double v = 1324.987; int n; n = int (v); cout << "c = " << n

我运行了这段代码,但输出与我预期的不同。 输出:

c = 1324
v = 1324.99

我希望
v
的输出应该是1324.987。为什么
v
中的数据与输出不同

我在Windows832上使用代码lite

#include <iostream>
using namespace std;
int main()
{
    double v = 1324.987;
    int n;
    n = int (v);
    cout << "c = " << n << endl;
    cout << "v = " << v << endl;
    return 0;
}
#包括
使用名称空间std;
int main()
{
双v=1324.987;
int n;
n=int(v);

cout浮点类型由于其固定宽度表示形式而继承舍入错误。有关详细信息,请参阅。

使用cout
打印时,默认精度为6,因此仅显示6位小数。数字舍入到最接近的值,这就是为什么您看到1324.99。您需要查看更多信息“正确”值


但是,将精度设置得太高可能会打印出大量的垃圾数字,因为二进制浮点类型无法准确存储所有十进制浮点值。

您期望的是什么?我期望v的输出应该是1324.987。虽然有用的信息,但这不是这里的情况;事实上,v的默认精度显示为6。即使没有舍入错误,输出也将为1324.99。
double
的精度足以存储1324.987。