Программа для конверсии Фаренгейта в цель

Я пишу программу для класса, в котором я участвую, и мне нужна помощь в программе для преобразования Фаренгейта в цель по Celsius в 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. Я знаю, что я что-то упускаю, но не могу понять, что.

Ответ 1

5/9 приведет к целочисленному делению, которое будет = 0

Попробуйте 5.0/9.0.

Ответ 2

У вас проблема:

celsius = (5/9) * (fahrenheit-32);

5/9 всегда даст вам 0. Вместо этого используйте (5.0/9.0).

Ответ 3

попробуйте celsius = ((double)5/9) * (fahrenheit-32); Или вы можете использовать 5.0.

Дело в том, что "/" смотрит на тип операнда. В случае int результат также является int, поэтому у вас есть 0. Когда 5 рассматривается как double, то деление будет выполнено правильно.

Ответ 4

напишите 5/9.0 вместо 5/9 - это приведет к двойному делению

Ответ 5

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

Ответ 6

При работе с float он должен быть 5.0f/9.0f.

При работе с удвоениями оно должно быть 5.0/9.0.

При работе с целыми числами остатки/фракции всегда усекаются. Результаты 5/9 между 0 и 1, поэтому он усекается до 0 каждый раз. Это умножает другую сторону на ноль и полностью аннулирует ваш ответ каждый раз.

Ответ 8

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();
}