我试图找出如何以数字安全的方式计算车辆维修工作的总成本,避免舍入错误。我得到了在工作上花费的时间,然后将其乘以一个恒定的劳动力价值,以获得正确的劳动力成本,但是它没有计算出应该如何。这是我在工作上花了20分钟的例子。
这显然是错误的,因为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();
感谢任何帮助/建议。
答案 0 :(得分:2)
首先,您要将totalTime
转换为仅具有两位精度的字符串表示,这不会非常准确。
其次,在进行财务计算时,通常应使用decimal
类型而非double
类型,这样可以提高准确性(尽管它仍然不完全准确)。
要做的第一件事是使用totalTime
计算总工资而不是使用转换后的字符串值:
tb_labourtotal.Text = (totalTime.TotalHours * Convert.ToInt32(tb_labourrate.Text)).ToString();