0

我正在尝试在 c++ 中使用 pow 函数,但结果不是我所期望的。片段:

#include <math.h>
float floatcopy = boost::lexical_cast<float>(copy); //Then floatcopy is 2.300000    
float exponent = boost::lexical_cast<float>(copy[foundEXP+1]); // Then exponent is 5.00000    
floatcopy = pow(floatcopy*10,-exponent);

现在,当在我的计算器上(或在我的脑海中)输入 2.3*10^-5 时,我得到了预期:0.0000230

以上截断结果为 1.5536773e-007

这里有什么问题??

4

4 回答 4

6

您的计算机正在计算 2.3*(10^-5)。在您的代码中,您计算​​ (2.3*10)^-5。

于 2011-10-31T11:47:22.337 回答
2

看起来您正在计算 (2.3*10)^-5 而不是 2.3*10^-5。

尝试:

floatcopy = floatcopy*pow(10,-exponent);

于 2011-10-31T11:49:54.680 回答
0

您没有正确使用 pow 功能。您实际上在做的是 (2.3 * 10)^-5,而您尝试做的(如果我没记错的话)是 2.3 * (10 ^ -5)。

为此,您应该这样做:

floatcopy *= pow(10,-exponent);
于 2011-10-31T11:52:11.557 回答
-2

23 的负五次方给出了你得到的结果....

于 2011-10-31T11:52:10.203 回答