【问题标题】:How to keep the precision of double variable in C++? [closed]如何在 C++ 中保持双变量的精度? [关闭]
【发布时间】:2016-08-04 18:48:55
【问题描述】:

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

int x = 1234;
double y = 0.3456;

double z = x + y;

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

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

【问题讨论】:

  • z 包含一个准确的值。您打印的精度不够。
  • 如果您仍然遇到问题,请显示产生不良输出的完整程序
  • 您如何查看z 中的值?
  • 这个问题确实值得反对!
  • @TheIndependentAquarius 我同意。你没有提供任何证据。

标签: c++ floating-point


【解决方案1】:

它确实包含1234.3456。自己检查:

#include <cstdio>

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

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

Output:

1234.34560000

【讨论】:

  • 换句话说,是的,它毕竟是关于打印(或格式化输出)的。
【解决方案2】:

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

【讨论】:

  • 实际上是 15.9 个十进制数字。
  • 取决于您是否需要往返十进制到二进制到十进制的工作。 exploringbinary.com/…
  • @EJP 谢谢,15.9 是 53 / log_2(10)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
相关资源
最近更新 更多