Я застрял с этой ошибкой в C и просто не могу понять, что происходит не так. Следующий запрос формирует неотъемлемую часть моего кода для постепенного увеличения значений в последовательных итерациях. Вот запрограммированная формула:ошибка в pow от math.h
Я прокомментировал ошибки в коде.
#include <math.h>
#include <iostream>
int main()
{
double maxMeshS = 0;
double minMeshS = 0;
cout << "enter max mesh size (m): ";
cin >>maxMeshS;
cout <<"\nenter min mesh size (m): ";
cin >> minMeshS;
double raise = maxMeshS/minMeshS; //Values used for run maxMeshS = .5
double factor = 1/9; // minMeshS = .005
double b = pow(raise,factor);
cout << "b " << b << endl; // The error happens here when I use above values
// b comes out to be 1 which should be 1.668100 instead
double a = minMeshS/b;
cout << "a " << a << endl;
int x;
cout << "enter x " ;
cin >> x;
double queryCube = a*pow(b,x);
cout << queryCube << endl;
return(0);
}
Однако, когда я использую расчетные значения для разделения maxMeshS/minMeshS
т.е. 100 и 1/9 т .11111 я получить правильные значения для b = pow(100, .1111) = 1.66800
. Почему это происходит?
Не так важно здесь, но вы должны попробовать привыкнуть всегда использовать 'std :: pow' от' cmath' вместо версии C от 'math.h'. 'std :: pow' включает в себя некоторые важные оптимизации для целочисленных показателей, в то время как' '' '' '' 'использует' double' экспоненты, независимо от того, что (нет перегрузки функций в C). –