C# 数据集按十进制添加值,但返回0
我有一个包含两列的数据集。 我将这两个值相加,它们都是objectdecimal类型C# 数据集按十进制添加值,但返回0,c#,.net,dataset,decimal,C#,.net,Dataset,Decimal,我有一个包含两列的数据集。 我将这两个值相加,它们都是objectdecimal类型 private decimal CalculateCensusForChild(DataSet dsGADCensusDetails) { var total = 0.00M; foreach (DataRow dr in dsGADCensusDetails.Tables[0].Rows) { total += WebUtilit
private decimal CalculateCensusForChild(DataSet dsGADCensusDetails)
{
var total = 0.00M;
foreach (DataRow dr in dsGADCensusDetails.Tables[0].Rows)
{
total += WebUtility.Cast(dr["Male"], 0.00M) + WebUtility.Cast(dr["Female"], 0.00M);
}
return total;
}
public static decimal Cast(Object aValue, decimal aOnError)
{
decimal result;
try
{
result = decimal.Parse(aValue.ToString());
}
catch
{
result = aOnError;
}
return result;
}
当值是整整数时,total返回的结果很好,但我希望它们是十进制值,因此返回一个十进制值,稍后我会将其转换为一个没有小数点的字符串
e、 g0.65+0.25返回0
总数始终等于一个整数,但用户界面上需要显示十进制值以减少舍入,因此一些解决方法似乎不必要,但这就是我们生活的世界
所以我想我在语法上弄乱了,把它转换成一个小数点,虽然它是加法,但是任何其他的想法都是非常受欢迎的
为大家干杯 什么是WebUtility.Cast?如果要求十进制值的和,为什么总变量是int?顺便说一句,我将其重命名为total,以遵循正常惯例。total需要使用decimal类型。以及WebUtility.Cast的邮政编码。大概它会将值舍入到最接近的整数,而您不希望它舍入。进行了您提到的更改并上载了cast方法,现在似乎工作状态更好,但如果您认为我可以做得更好,请随意添加更多注释: