从双精度转换为十进制
本文关键字:十进制 转换 双精度 | 更新日期: 2023-09-27 18:27:12
我正在使用Google weather XML文件用C#开发一个天气应用程序,但在类文件中使用计算时遇到了问题。我正试图用following方法将farenheit转换为celcius:
public static class Helper
{
public static decimal CalculateTemp(decimal input)
{
return Math.Round((input - 32) * 5 / 9 / 1.0) * 1.0 + "°C";
}
}
"输入";是天气数据的来源,比如今天的最高气温。我在编译时遇到以下错误:
错误23:与"Weather.Helper.CalculateTemp(decimal)"匹配的最佳重载方法包含一些无效参数
错误24:参数1:无法从"double"转换为"decimal"
错误25:运算符"/"不能应用于"decimal"answers"double"类型的操作数
我不知道如何解决这个问题。。
不要使用decimal
作为温度,double
就足够了。
另外,不要返回"°C"
,因为它是一个数字,而不是字符串:
public static double CalculateTemp(double input)
{
return Math.Round((input - 32) * 5 / 9);
}
1.0
是double
,而不是decimal
。使用后缀m
或M
将数字标记为decimal
("M"代表"货币",因为这种类型通常用于金融交易。)
(input - 32) * 5M / 9M
您甚至不需要* 1.0
如果你想使用十进制(而不是双精度),你必须重构为:
public static class Helper
{
public static string CalculateTemp(decimal input)
{
return Math.Round(((input - 32) * 5 / 9 / 1.0m)) + "°C";
}
}
或:
public static class Helper
{
public static string CalculateTemp(decimal input)
{
return Math.Round(((input - 32) * 5 / 9 / (decimal)1.0)) + "°C";
}
}
还要注意,由于末尾有"°C"
,您必须更改方法签名才能返回字符串。