我在SQL数据库中有4条记录。其中有2个小时的小时1和小时2
所以在这里我得到了这些列的总和:
SUM of column1 : 22.00
SUM of column1 : 18.30
这些是小数,但我认为是时间。
现在我想从column1 sum中减去column2 sum,即
22.00 - 18.30
所以我会得到3.7
这是错误的,因为我认为是时间。
我想要最终答案为:3.30(要求的理由:因此当我将此结果添加到18.30(18.30 + 3.30,即21.60 = 22.00小时为60分钟= 1小时)时,我得到总计22.00)。
任何人都可以帮我解决如何获得3.30
的结果吗?我不能使用TimeFormat。
答案 0 :(得分:2)
正如大家在评论中所说:需要进行转换,而且必须在求和之前完成转换。
以下是:
var times1 = new decimal[] { 1.00m, 9.00m, 9.00m, 3.00m };
var times2 = new decimal[] { 1.00m, 5.30m, 9.00m, 3.00m };
var hours1 = ActualHours(times1).Sum(); // using System.Linq;
var hours2 = ActualHours(times2).Sum();
var diff = hours1 - hours2;
var result = "Actual: hours1 = " + hours1 +
", hours2 = " + hours2 +
", diff = " + diff + "\r\n" +
"Printed: hours1 = " + Print(hours1) +
", hours2 = " + Print(hours2) +
", diff = " + Print(diff);
使用的方法:
public IEnumerable<decimal> ActualHours(params decimal[] values)
{
foreach (var v in values)
{
var t = Math.Truncate(v);
yield return t + (v - t) / 0.6m;
}
}
public string Print(decimal v)
{
var t = Math.Truncate(v);
return (t + (v - t) * 0.6m).ToString("0.00");
}
输出:
Actual: hours1 = 22.0, hours2 = 18.5, diff = 3.5
Printed: hours1 = 22.00, hours2 = 18.30, diff = 3.30