使用pow产生意想不到的结果

时间:2011-10-31 11:44:16

标签: c++ math pow

我正在尝试在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 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

尝试:

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

答案 2 :(得分:0)

您没有正确使用pow功能。你实际做的是(2.3 * 10)^ - 5,你尝试做什么(如果我没错)是2.3 *(10 ^ -5)。

为此,你应该这样做:

floatcopy *= pow(10,-exponent);

答案 3 :(得分:-2)

23到-5的幂可以得到你得到的结果......