存储在char数组中的双精度数据返回一个浮点值

时间:2014-07-26 17:16:36

标签: c++ c

为什么当我将一个double值的DATA存储在char数组中时,如果我将char数组中的数据传递给另一个double,它会返回一个Float值?

在此:

double vals = 3.141592654;
char xvals[sizeof(vals)];
memcpy(&xvals, &vals, sizeof(xvals));

double y;
memcpy(&y, &xvals, sizeof(xvals));
std::cout<<y<<"\n";

输出:3.14159

2 个答案:

答案 0 :(得分:5)

它没有&#34;返回浮点值&#34; :std::cout默认情况下不会打印所有这些数字。

您可以使用std::setprecison(来自<iomanip>)更改要打印的位数:

#include <iostream>
#include <iomanip>

int main()
{
    double vals = 3.141592654;
    std::cout << vals << "\n";

    std::cout << std::setprecision(10);
    std::cout << vals;
    return 0;
}

<强>输出:

  

3.14159

     

3.141592654

答案 1 :(得分:3)

没有数据丢失或强制转换。 cout的默认precision为6.这将为您提供所需的答案

std::cout<<std::setprecision(10)<<y<<"\n";

编辑:您需要为<iomanip>添加标题std::setprecision