数学运算在c#中无法正常工作

时间:2014-03-31 10:24:19

标签: 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);
Console.WriteLine("Orignal Temperature : " + faren);
Console.WriteLine("Converted in celsuis : " + cel);
Console.WriteLine("Converted Back in fahrenheit  : " + farenconv);

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

2 个答案:

答案 0 :(得分:8)

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

具体来说,5/9等于0,因为a / b,当a和b是整数且a<b等于0时。

答案 1 :(得分:2)

要决定是否使用整数或浮点除法,C#不会查看您指定的类型,它会查看除数的类型。除以整数,它将使用整数除法。如果数字文字不包含小数点,则它们是自动整数,因此如果您想要浮点除法,则需要将其标记为浮点数。添加f是此简写,因此9ffloat。同样,9ddouble9mdecimal

所以你的代码变成了

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