如何在C ++中保持double变量的精度?

时间:2016-08-04 09:41:30

标签: c++ floating-point

It is not about printing。它是关于存储价值。

int x = 1234;
double y = 0.3456;

double z = x + y;

目前z包含1234.35。我希望z包含1234.3456

可以做些什么来实现这个目标?

2 个答案:

答案 0 :(得分:5)

确实包含1234.3456。自己检查一下:

#include <cstdio>

int main()
{
    int x = 1234;
    double y = 0.3456;
    double z = x + y;

    printf("%.8f\n", z);
}

Output

1234.34560000

答案 1 :(得分:2)

双精度包含少于16位十进制数字。 z的打印值不如存储的值精确。 如果您想要超过16位数,您应该考虑特定的库 mpfr