C# 数学运算在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);
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
。