C# 为什么可以';我不能把华氏温度转换成摄氏温度吗?
我的C#代码不断返回错误的转换结果。据我所知,转换公式是正确的,但它总是显示错误的结果 e、 g:70华氏度给我12777777摄氏度。你能查一下我的代码吗C# 为什么可以';我不能把华氏温度转换成摄氏温度吗?,c#,C#,我的C#代码不断返回错误的转换结果。据我所知,转换公式是正确的,但它总是显示错误的结果 e、 g:70华氏度给我12777777摄氏度。你能查一下我的代码吗 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Temperature { class Program {
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Temperature
{
class Program
{
class Temperature
{
public double temp;
public void Convert(double value)
{
double tEmp;
tEmp = (value - 32) / 1.8;
Console.WriteLine("The temperature in °C is :" + tEmp);
Console.ReadKey();
}
}
static void Main(string[] args)
{
double f;
Temperature c = new Temperature();
f = Console.Read();
c.Convert(f);
}
}
}
你的问题是
f = Console.Read();
它只读取第一个字符,而不是整个输入行。试一试
f = Convert.ToDouble(Console.ReadLine());
关于Console.Read
与Console.ReadLine()
Console.Read()
返回输入流中下一个字符的序号值之间的差异,这是一个很好的答案
输入流中的第一个字符是'7'
,其序号值为0x0037
。以十进制表示,这是55
,(55-32)/1.8
是12.7777
你应该使用
Console.ReadLine()
而不是Console.Read()
你期望得到什么结果?公式是(°F-32)x 5/9=°C
@patrickhoffman有什么区别?@eldardorzhiev:只适用于那些不每天都这样做的人。“像我一样。”戴维费南说。如果您尝试运行此程序,您将得到所描述的结果。但是,只需在Convert
内设置断点并查看value
是什么,就可以解决此问题。正确,这是问题的根源,但是您应该解释为什么Console.Read
of70
给出的是12.78
而不是21.11
Console.Read返回一个Int32,它表示读取的单个字符或-1。再见,谢谢。我不知道“Convert.ToDouble”方法。