2011-10-31 9 views
0

私はC++でpow関数を使用しようとしていますが、結果は期待したものではありません。スニペット:タイピング今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

で結果を切り取ら

ここで問題は何ですか?

+1

floatcopy = floatcopy *捕虜(10、-exponent)。 –

+2

私はあなたの質問が誤解を招くと思います: 'pow'は実際に期待される結果を生み出しています。あなたの質問は、 "なぜ私のコードは私がしたいことをしていないのですか?"おそらく、 "疑問がある場合は、コンパイラ/標準ライブラリ/言語ではなく、*あなた*のエラーを探します"。 –

答えて

6

あなたの計算機は2.3 *(10^-5)を計算しています。あなたのコードでは、(2.3 * 10)^ - 5を計算します。

2

あなたは2.3 * 10^-5の代わりに(2.3 * 10)^ - 5を計算しているようです。

試し:マイナス5乗

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

-2

23は、あなたが得ている結果を提供します....

0

あなたは正しくPOW機能を使用していません。あなたが実際にやっていることは(2.3​​ * 10)^ - 5で、あなたがしようとしていることは(私が間違っていない場合)2.3 *(10^-5)です。

これを行うには、あなたが実行する必要があります。

floatcopy *= pow(10,-exponent); 
関連する問題