C# 数学运算在c语言中不能正常工作#

C# 数学运算在c语言中不能正常工作#,c#,C#,我刚开始学习C#,我正在尝试一个程序,该程序以华氏温度为单位,转换成摄氏度,第三步将摄氏度转换回华氏度(以验证数学) 我使用以下代码来执行上述功能 Console.Write("Enter Your Temperature in fahrenheit : "); float faren = float.Parse(Console.ReadLine()); float cel = (faren - 32)*(5/9); float farenconv = 32 + (cel * 9 / 5);

我刚开始学习C#,我正在尝试一个程序,该程序以华氏温度为单位,转换成摄氏度,第三步将摄氏度转换回华氏度(以验证数学) 我使用以下代码来执行上述功能

Console.Write("Enter Your Temperature in fahrenheit  : ");
float faren = float.Parse(Console.ReadLine());
float cel = (faren - 32)*(5/9);
float farenconv = 32 + (cel * 9 / 5);
Console.WriteLine("Orignal Temperature : " + faren);
Console.WriteLine("Converted in celsuis : " + cel);
Console.WriteLine("Converted Back in fahrenheit  : " + farenconv);

现在的问题是,我得到的是
cel=0
作为输出,不管我以华氏温度输入什么,但当我删除
*(5/9)
时,它工作正常,任何人都有任何线索。

使用5/9f这是一个经典问题,当我们使用整数进行计算时


具体地说,5/9等于0,因为a/b,当a和b是整数并且
a决定是使用整数除法还是浮点除法时,C#不看分配给的类型,而是看除法的类型。除以一个整数,它将使用整数除法。如果数字文字不包含小数点,则它们会自动成为整数,因此如果需要浮点除法,则需要将其标记为浮点。添加
f
是这方面的简写,因此
9f
是一个
float
。类似地,
9d
是一个
double
9m
是一个
十进制

所以你的代码变成了

float cel = (faren - 32)*(5/9f);
float farenconv = 32 + (cel * 9 / 5f);

5和9都是整数。所以5/9是在整数运算中执行的。。。只要将其更改为5f/9f,您就会得到正确的答案。在这种情况下,可能的副本实际上不会编译,因为OP使用的是
float
,而不是
double