#c #math #pow
#c #математика #pow
Вопрос:
Я пытаюсь использовать функцию 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
В чем здесь проблема??
Комментарии:
1. floatcopy = floatcopy * pow(10, — показатель степени);
2. Я думаю, что ваш вопрос вводит в заблуждение:
pow
действительно дает ожидаемый результат. Ваш вопрос должен быть: «Почему мой код не делает то, что я хочу?». Возможно, пример «если сомневаетесь, ищите ошибку в себе , а не в компиляторе / стандартной библиотеке / языке».
Ответ №1:
Ваш вычислитель вычисляет 2.3 * (10 ^ -5). В вашем коде вы вычисляете (2.3 * 10) ^-5.
Ответ №2:
Похоже, что вы вычисляете (2.3 * 10) ^ -5 вместо 2.3 * 10 ^ -5.
попробуйте:
floatcopy = floatcopy*pow(10,-exponent);
Ответ №3:
Вы неправильно используете функцию pow. На самом деле вы делаете (2.3 * 10) ^ -5, а то, что вы пытаетесь сделать (если я не ошибаюсь), составляет 2.3 * (10 ^ -5).
Для этого вам следует сделать:
floatcopy *= pow(10,-exponent);
Ответ №4:
23 в степени минус пять дает результат, который вы получаете….