プロが教えるわが家の防犯対策術!

時間の計算方法が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円」の発生するのか
ご教示して頂けたら幸いです。

A 回答 (5件)

単純に、「A社は 52.8 分の、0.8分を


切り捨てている」からです。

時給1,000円なら、1分あたりの給料を単純に
計算すると、
1,000÷60=16.66...
切り捨てたのが、0.8分ですから、この0.8倍
16.66...×0.8 = 13.33(円)
この分が、「切り捨てられている」だけです。
    • good
    • 1
この回答へのお礼

とても参考になりました。

お礼日時:2009/09/28 16:48

1番様の書かれている通りで、0.8[60進法]を無視しているためです。


1,000×0.8/60≒13
千円に対して整数の部分で差異を生じさせないためには、少なくとも換算後の値は0.001(小数点以下第3位)までを同じにしておかないとダメです。
    • good
    • 0
この回答へのお礼

とても参考になりました。

お礼日時:2009/09/28 16:49

> 0.8は切り捨てています。


> 分→小数点切り上げ(分×時給×100÷60)
  この式の100は、ここだけみるといらない気が・・

切り捨てた分を計算すると
0.8(分)*1000/60
=0.13333・・・

だいたい、13円になりますよ。
    • good
    • 0
この回答へのお礼

とても参考になりました。

お礼日時:2009/09/28 16:49

ホーホー


100.88時間ねー
10進時計とは変わった時計ですな~(⌒▽⌒)アハハ!
単位の換算をするときの端数処理の仕方によって差が出るのは当然です
    • good
    • 0
この回答へのお礼

とても参考になりました。

お礼日時:2009/09/28 16:48

全くの素人ですが



>0.8は切り捨てています。
>小数点切り上げ

直感的にこれが誤差の原因なきがします。

この回答への補足

素早いご回答誠にありがとうございました。

私も
>0.8は切り捨てています。
>小数点切り上げ
が原因だとは思うのですが
どうして0.8切り捨てると
13円誤差が生じるのかが分からないのですが・・・。

補足日時:2009/09/28 13:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A