当我调用此方法时,它只返回小数位前的数字,例如:
1
2
3
= 6
这很好,但是当我尝试时:
1.5
2
3.5
= 6
如何将小数位相加?
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string CalculateSum(List<int> listDouble)
{
return listDouble.Sum().ToString();
}
}
}
如果我使用公共字符串CalculateSum(List<double> listDouble)
,则结果始终为0.
无论我输入什么内容。
这就是我传递信息的方式:
{
CalculateSumOfList.ServiceReference1.Service1SoapClient client = new CalculateSumOfList.ServiceReference1.Service1SoapClient();
CalculateSumOfList.ServiceReference1.ArrayOfInt arrayOfInt = new CalculateSumOfList.ServiceReference1.ArrayOfInt();
arrayOfInt.AddRange(listDouble.Select(d => (int)d).ToList());
string result = client.CalculateSum(arrayOfInt);
label1.Text = Convert.ToString(result);
}
答案 0 :(得分:7)
查看您的参数:
public string CalculateSum(List<int> listDouble)
这是一个整数的列表,尽管名称如此。如果你认为它是双打列表,你应该改变类型:
public string CalculateSum(List<double> listDouble)
您还需要取消注释正确的Sum
实现...返回从ToString
返回值调用Enumerable.Select
的结果真的不会做什么你想要的。
答案 1 :(得分:3)
你的方法毫无意义。您正在将int
s(整数 - 您知道,整个值,因此问题)的列表中的每个项目转换为double
,这不会更改实际数值,然后取列表的字符串表示。那甚至不应该给你6
。我想你的意思是:
public string CalculateSum(List<double> listDouble)
{
return listDouble.Sum().ToString();
}
答案 2 :(得分:2)
您正在传递整数列表。整数不能包含小数值。
答案 3 :(得分:1)
你的listDouble不包含双打!它是一个整数列表!
public string CalculateSum(List<double> listDouble)
答案 4 :(得分:1)
你不能用那种方法。它会在添加之前将双精度转换为整数。
如果您在小数点后面只有一个位置,则可以将每个数字乘以10,得到总和,并将结果除以10.
答案 5 :(得分:1)
public string CalculateSum(List<int> listDouble)
{
//return listDouble.Sum().ToString();
return listDouble.Select(n => (double)n).ToString();
}
数据类型问题
public string CalculateSum(List<int> listDouble)
应该是
public string CalculateSum(List<double> listDouble)
答案 6 :(得分:1)
使用整数时,会自动解析您的数字,这会丢弃小数点。您需要使用Double来表示您的变量 - 然后您将能够保留您的小数。
答案 7 :(得分:1)
看起来你要求整数而不是小数来尝试替换
List<int>
到
List<decimal>
在您的方法签名
中