如何在 C/C++ 中从系数和 10 的幂创建双精度数?
Posted
技术标签:
【中文标题】如何在 C/C++ 中从系数和 10 的幂创建双精度数?【英文标题】:How to create a double from a coefficient and a power of 10 in C/C++? 【发布时间】:2014-01-28 09:47:25 【问题描述】:从系数和 10 的幂创建双精度的好方法是什么?或者换句话说,在运行时从书面科学记数法值的有效位和指数创建双精度的好方法是什么?
【问题讨论】:
coefficient * pow( 10.0, exponent)
有什么问题?
对于 two 的幂,您可以使用 std::ldexp,但对于 10 的幂,std::pow
是您所拥有的。
没有“科学记数法值”之类的东西 - 科学记数法是值的文本表示。
确实如此。所以除非这涉及到一些字符串处理程序,否则没有任何意义。
感谢您注意到这一点。我修正了问题中的措辞。
【参考方案1】:
不确定数值质量,但显而易见的方法是:
double make_double(double coefficient, int power)
return coefficient * pow(10.0, power);
【讨论】:
如果您担心数值质量,那么为了安全起见,您可以编写一个字符串并将其传递给strtod
。系数的精度可能仍然会导致问题,但是对于输入中已经存在的不准确性,您无能为力。以上是关于如何在 C/C++ 中从系数和 10 的幂创建双精度数?的主要内容,如果未能解决你的问题,请参考以下文章