为什么在C ++中舍入双变量的大值?

时间:2014-07-13 06:30:23

标签: c++ c

我正在使用Dev C ++编译器来理解指针的一些漂亮用法,这是我观察到的,我真的很想知道

在上图中,当我使用d的值为52.xxx并将其传递给print函数时,它不会对值进行舍入,并按其浮点表示形式打印该值,现在查看以下内容图 -

#include<iostream>
using namespace std;
int main(){
  double d = 52.664;
  cout << d << endl
}

此代码的输出为52.664

对于d = 56455.66456它将它舍入下一个值,为什么会这样,有人可以解释一下C ++编译器在这里做什么的行为?

2 个答案:

答案 0 :(得分:5)

标准库选择&#34;中间地带&#34;默认情况下的精度级别。你可以调整它:

#include <iostream>
#include <iomanip>

int main() { 
    std::cout << "Default precision: " << 526686.6664 << "\n"
              << "Chosen precision: " 
              << std::setprecision(10) << 526686.6664 << "\n";
}

答案 1 :(得分:1)

打印double值时,您似乎有6位十进制数字。