标签: c++ floating-point
It is not about printing。它是关于存储价值。
int x = 1234; double y = 0.3456;
int x = 1234;
double y = 0.3456;
double z = x + y;
目前z包含1234.35。我希望z包含1234.3456
z
1234.35
1234.3456
可以做些什么来实现这个目标?
答案 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