我需要一些帮助,用于将华氏温度转换为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。我知道我错过了什么,但无法弄清楚是什么。
答案 0 :(得分:23)
5/9将导致整数除法,其将= 0
请尝试5.0/9.0
。
答案 1 :(得分:9)
你的问题在这里:
celsius = (5/9) * (fahrenheit-32);
5/9
将始终为您提供0
。请改用(5.0/9.0
)。
答案 2 :(得分:2)
尝试celsius = ((double)5/9) * (fahrenheit-32);
或者您可以使用5.0。
事实是“/”查看操作数类型。在int的情况下,结果也是一个int,所以你有0.当5被视为double时,则除法将被正确执行。
答案 3 :(得分:0)
您需要使用浮点运算才能以任何精度执行这些类型的公式。如果需要,您始终可以将最终结果转换回整数。
答案 4 :(得分:0)
写5/9.0
而不是5/9 - 这会强制双重划分
答案 5 :(得分:0)
处理浮动时,需要为5.0f / 9.0f。
处理双打时,需要为5.0 / 9.0。
处理整数时,余数/分数总是被截断。 5/9结果介于0和1之间,因此每次都将其截断为0。将另一边乘以零,每次都完全取消你的答案。
答案 6 :(得分:0)
5
和9
属于int
类型
因此5/9
将始终生成0
。
您可以使用5/9.0
或5.0/9
或5.0/9.0
答案 7 :(得分:-4)
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();
}