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 をマイナス 5 乗すると、得られる結果が得られます。

于 2011-10-31T11:52:10.203 に答える