【问题标题】:How to create a double from a coefficient and a power of 10 in C/C++?如何在 C/C++ 中从系数和 10 的幂创建双精度数?
【发布时间】:2014-01-28 09:47:25
【问题描述】:

从系数和 10 的幂创建双精度的好方法是什么?或者换句话说,在运行时从书面科学记数法值的有效位和指数创建双精度的好方法是什么?

【问题讨论】:

  • coefficient * pow( 10.0, exponent) 有什么问题?
  • 对于 two 的幂,您可以使用 std::ldexp,但对于 10 的幂,std::pow 是您所拥有的。
  • 没有“科学记数法值”之类的东西 - 科学记数法是值的文本表示。
  • 确实如此。所以除非这涉及到一些字符串处理程序,否则没有任何意义。
  • 感谢您注意到这一点。我修正了问题中的措辞。

标签: c++ c double scientific-notation


【解决方案1】:

不确定数值质量,但显而易见的方法是:

double make_double(double coefficient, int power)
{
  return coefficient * pow(10.0, power);
}

【讨论】:

  • 如果您担心数值质量,那么为了安全起见,您可以编写一个字符串并将其传递给strtod。系数的精度可能仍然会导致问题,但是对于输入中已经存在的不准确性,您无能为力。
猜你喜欢
  • 1970-01-01
  • 2019-07-13
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多