ошибка в pow от math.h

Я застрял с этой ошибкой в ​​C и просто не могу понять, что происходит не так. Следующий запрос является неотъемлемой частью моего кода для экспоненциального увеличения значений в последовательных итерациях. Вот формула, которую я запрограммировал:

Я прокомментировал ошибки в коде.

#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, Почему это происходит?

3

Решение

Ваш фактор (int)1 / (int)9 который (int)0; Почти все, что возведено в нулевую власть, — это одно
Вы могли бы сделать что-то вроде этого

double factor = 1/9.0; // make sure the 9 is a floating point
9

Другие решения

если я не ошибаюсь, вы должны изменить коэффициент на

double factor = 1.0/9;

Проблема заключается в том, что компилятор обрабатывает 1/9 как целочисленное деление, что приводит к 0.
Таким образом, вы рассчитываете силу нуля, которая всегда равна 1.

6

По вопросам рекламы [email protected]