Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Язык Си. Перевод из Цельсия в Фаренгейты и из Фаренгейта в Цельсии -разные значения. Как бороться с этим?

Кирилл Знаток (357), на голосовании 9 лет назад
Дополнен 9 лет назад
Имеется таблица перевода:
Фар Цельсии
0 -17
20 -6
40 4 - на этом этапе шаг меняется ( +10), дальше опять 11
...
300 148

При написании программы по переводу из Фаренгейтов В Цельсии все получается. А вот обратно возникает погрешность. Вместо 100 Фаренгейтов - 98
Дополнен 9 лет назад
Перевод из Фаренгейтов в Цельсии:
#include

main()
{

printf("Conversion from Fahrenheits to Celsius\n");

float fahr, celsius;
int lower,upper,step;

lower=0;
upper=300;
step=20;

fahr=lower;
while ( fahr<=upper)
{
celsius=(5.0/9.0)*(fahr-32.0);
printf ("%3.0f %6.1f\n",fahr,celsius);
fahr= fahr+step;
getchar();
}
}
Дополнен 9 лет назад
Перевод из Цельсиев в Фаренгейты:
#include

main()
{
printf("Conversion from Celsius to Fahrenheits\n");
float fahr,celsius;
int lower, upper, step;

lower=-17;
upper=27;
step=11;

celsius=lower;

while (celsius<=upper)
{
fahr=9.0*(celsius)/5.0+31.0;
printf("%3.0f %6.0f\n", celsius, fahr);
celsius=celsius+step;
getchar();
}
}
Голосование за лучший ответ
Дмитрий Павлов Гуру (2911) 9 лет назад
http://www.fahrenheit-celsius.info/
Ошибку в расчетах допускаешь вот и значения разные получаются!
фаренгейт | твой результат | а должно быть так
300 -----------------148 --------------------148.89
40 --------------------4 ------------------------4.44
....
КириллЗнаток (357) 9 лет назад
Данные заданы, я на калькуляторе пересчитывал - действительно погрешность есть, мне интересно, можно ли от нее избавиться программно, или только вводить точные исходные данные?
Дмитрий Павлов Гуру (2911) Это же математика конечно здесь очень важна точность.
Krab Bark Искусственный Интеллект (301808) 9 лет назад
"Бороться" - исправлением программы.
P.S. Не 31.0,a 32.0
И проще вместо fahr=9.0*(celsius)/5.0+32.0 написать fahr=1.8*celsius+32;
Похожие вопросы