我正在努力解決如何以數字安全的方式計算汽車維修作業的總成本,避免舍入誤差。我得到了在一份工作上花費的時間,然後將它乘以一個不變的勞動力價值,以獲得正確的勞動成本,但是它沒有弄清楚它應該如何。這是我在工作中花了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