Использование Pow дает неожиданный результат - PullRequest
0 голосов
/ 31 октября 2011

Я пытаюсь использовать функцию pow в c ++, но результат не тот, который я ожидаю. Отрывок:

#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 ]

6 голосов
/ 31 октября 2011

Ваш вычислитель вычисляет 2,3 * (10 ^ -5). В вашем коде вы рассчитываете (2.3 * 10) ^ - 5.

2 голосов
/ 31 октября 2011

Похоже, вы вычисляете (2,3 * 10) ^ - 5 вместо 2,3 * 10 ^ -5.

попробуй:

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

0 голосов
/ 31 октября 2011

Вы неправильно используете функцию pow.То, что вы на самом деле делаете (2.3 * 10) ^ - 5, а то, что вы пытаетесь сделать (если я не ошибаюсь), составляет 2,3 * (10 ^ -5).

Для этого вам следуетделать:

floatcopy *= pow(10,-exponent);
0 голосов
/ 31 октября 2011

23 в степени минус пять дает результат, который вы получаете ....

...