Я работал над кодом Си. Я объявил несколько констант, используя #define. Однако я заметил, что, хотя я делаю локальную переменную с константой (определенной с помощью #define), я численно получаю неправильный ответ.
Я попытался изменить определенную константу (используя #define) на локальную переменную и затем выполнить деление. Теперь я получаю правильный ответ.
Проблема в том, что у меня много констант, значения которых должны использоваться в различных функциях. Я хочу знать, как я могу решить эту проблему.
Это результаты, которые я получаю при использовании #define
«0.106883 - это q2, 11.575652 - это D2, 0.000004 - это q2 / D2»
Это результаты, которые я получаю при использовании в качестве локальной переменной.
«0,106883 - это q2, 11,575652 - это D2, 0,009233 - это Q2 / D2»
Я использую GCC 8.3.0_2. Это более простая версия моей проблемы.
#include <stdio.h>
#include<stdlib.h>
#define D2 (h2()*2)/(50)
double h2(void);
int main(){
double q2 = 0.106883;
printf("%f is q2, %f is D2 ,%f is q2/D2\n",q2,D2,q2/D2);
}
double h2(void){
return(289.391293);
}