C программа для конвертации Фаренгейта в Цельсий
Я пишу программу для класса, в котором я нахожусь, и мне нужна помощь с программой для преобразования Фаренгейта в Цельсий в C. Мой код выглядит следующим образом
#include <stdio.h>
int main (void)
{
int fahrenheit;
double celsius;
printf("Enter the temperature in degrees fahrenheit:\n\n\n\n");
scanf("%d", &fahrenheit);
celsius = (5/9) * (fahrenheit-32);
printf ("The converted temperature is %lf\n", celsius);
return 0;
}
Каждый раз, когда я выполняю его, результат равен 0,000000. Я знаю, что что-то упустил, но не могу понять, что.
8 ответов
5/9 приведет к целочисленному делению, которое будет = 0
Пытаться 5.0/9.0
вместо.
Ваша проблема здесь:
celsius = (5/9) * (fahrenheit-32);
5/9
всегда даст вам 0
, Использовать (5.0/9.0
) вместо
Пытаться celsius = ((double)5/9) * (fahrenheit-32);
Или вы можете использовать 5.0.
Дело в том, что "/" смотрит на тип операнда. В случае int результатом также является int, поэтому у вас есть 0. Когда 5 обрабатывается как double, деление будет выполнено правильно.
Вам нужно использовать арифметику с плавающей запятой, чтобы выполнять формулы такого типа с любой точностью. Вы всегда можете конвертировать конечный результат обратно в целое число, если это необходимо.
При работе с поплавками он должен быть 5.0f / 9.0f.
При работе с двойниками он должен быть 5.0 / 9.0.
При работе с целыми числами остатки / дроби всегда усекаются. 5 / 9 дает результат от 0 до 1, поэтому он усекается до 0 каждый раз. Это умножает другую сторону на ноль и полностью аннулирует ваш ответ каждый раз.
5
а также 9
являются из int
тип
следовательно 5/9
всегда будет результатом 0
,
Ты можешь использовать 5/9.0
или же 5.0/9
или же 5.0/9.0
Вы также можете проверить программу на C для конвертации Фаренгейта в Цельсий
using System;
public class Calculate
{
public static void Main(string[] args)
{
//define variables
int Celsius;
int fahrenheit;
string input;
//prompt for input
//read in the input and convert
Console.WriteLine("Enter Celsius temperature");
input = Console.ReadLine();
Celsius = Convert.ToInt32(input);
//calculate the result
fahrenheit = ((Celsius * 9 )/5) + 32;
//print to screen the result
Console.WriteLine("32 degrees Celsius is {0}", "equivilant to 89.60 degrees fahrenheit");
Console.ReadLine();
}