質問: 同じ時間なのに、60進と10進とで給与の金額に誤差が生じる 時間の計算方法がa社とb社で異なります。 それによって同じ時間なのに 給与の金額が異なります。 a社→60進 b社→10進 元の時間「100.88」(10進) ------------ a社→10進から60進に計算し直しています。 整数(時間)はそのままで、小数点以下(分)を60で掛けて、端数を切り捨てています。 例(100.88 → 100 & 0.88*60=52.8)=100:52 0.8は切り捨てています。 accessでの計算例 cdbl(fix([時間]) & "." & fix(mid([時間], instr(1, [時間], ".", vbbinarycompare)) * 60)) ----- b社→元の時間「100.88」をそのまま使用 ------------ 時給(1000円)に換算すると・・・ a社→「100:52」 時間と分とに分けて計算 時間→時間×時給 + 分→小数点切り上げ(分×時給×100÷60) 答え=100867円 accessでの計算例 fix(ccur(([時給]*int([時間]))+usroundup([時給]*([時間]-int([時間]))*100/60,0))) ----- b社→「100.88」 時間×時給 100.88*1000 答え=100880円 ------------ ご質問したいことは、 a社→100867円、b社→100880円と、 どうして「13円」の発生するのか ご教示して頂けたら幸いです。
回答: > 0.8は切り捨てています。 > 分→小数点切り上げ(分×時給×100÷60) この式の100は、ここだけみるといらない気が・・ 切り捨てた分を計算すると 0.8(分)*1000/60 =0.13333・・・ だいたい、13円になりますよ。