我正在努力解决如何以数字安全的方式计算汽车维修作业的总成本,避免舍入误差。我得到了在一份工作上花费的时间,然后将它乘以一个不变的劳动力价值,以获得正确的劳动成本,但是它没有弄清楚它应该如何。这是我在工作中花了20分钟时的例子。以安全方式乘以分数c#
这清楚地工作了错了,因为£30第三是£10,让我怎么避免舍入误差,我的故事吗?
这是我如何获得总时间。
TimeSpan totalTime = TimeSpan.Zero;
foreach (DataRow timeEntry in dhJob.DataStore.Tables[jobTimeCollectionName].Rows)
{
DateTime start = Convert.ToDateTime(timeEntry["jobtimestart"]);
DateTime end = Convert.ToDateTime(timeEntry["jobtimeend"]);
totalTime += (end - start);
}
tb_labourtime.Text = Convert.ToString(Math.Round(totalTime.TotalHours, 2));
tb_labourtotal.Text = (Convert.ToDouble(tb_labourtime.Text) * Convert.ToInt32(tb_labourrate.Text)).ToString();
任何帮助/建议表示赞赏。
的面貌迈向'decimal'类型。 – Alex 2015-04-06 10:50:33
@Alex他将时间转换为只有两位数字的精度的字符串,所以没有使用'decimal'的数量会解决这个问题(但我同意他应该使用'decimal'作为解决方案的一部分 - 它只是不是整个解决方案) – 2015-04-06 10:52:30
我认为你最好提供一种输入分钟的方法。虽然'0.33'可能看起来很接近,但它仍然是'0.0033333 ...',从确切的结果来看,这可能会导致四舍五入。 – 2015-04-06 10:54:25