我刚刚开始学习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)
它工作正常时,是否有任何线索。
答案 0 :(得分:8)
当我们使用整数进行计算时,使用5 / 9f这是一个经典问题。
具体来说,5/9等于0,因为a / b,当a和b是整数且a<b
等于0时。
答案 1 :(得分:2)
要决定是否使用整数或浮点除法,C#不会查看您指定的类型,它会查看除数的类型。除以整数,它将使用整数除法。如果数字文字不包含小数点,则它们是自动整数,因此如果您想要浮点除法,则需要将其标记为浮点数。添加f
是此简写,因此9f
是float
。同样,9d
为double
,9m
为decimal
。
所以你的代码变成了
float cel = (faren - 32)*(5/9f);
float farenconv = 32 + (cel * 9 / 5f);