端数処理の順序

先日仕事中に、一致してほしい値が一致しないという問題が発生した。

先輩に確認したところ、これは端数処理の違いによるものらしい。

具体的に生じたことはというと、円未満の単位を持つ商品にたいして、すべての商品を合計してから円未満を切り捨てたものと円未満を切り捨ててから合計したものが一致しなかった。

後者のほうが切り捨てる回数が大きくなるであろうことから小さくなることは想像できる。

ここではそれを証明しようと思う。

商品の価格をP _ {1},P _ {2},…,P _ {n}円とすれば、今示したいのは下の不等式になる。 \left[\right]は床関数

\displaystyle \sum _ {i=1} ^ {n} \left[ P _ {i} \right] \leq \left[ {\sum _ {i=1} ^ {n} P _ {i} }\right]

証明

\displaystyle \left[P _ {i} \right] \leq P _ {i}
これはすべての iについて成立するので

\displaystyle \sum _ {i=1}^{n}\left[P _ {i} \right] \leq \sum _ {i=1}^{n}P _ {i}

したがって

\displaystyle \left[\sum _ {i=1}^{n}\left[P _ {i} \right] \right] \leq \left[ \sum _ {i=1}^{n}P _ {i} \right]
ここで、実数 xと整数 mについて \left[ x + m \right] = \left[ x \right] + m (整数は床関数の外に出せる)が成立することから、  \left[ P _ {i} \right]が整数であることを用いると
\displaystyle \left[\sum _ {i=1}^{n}\left[P _ {i} \right] \right] = \sum _ {i=1}^{n} \left[ P _ {i} \right]
以上より
\displaystyle\sum _ {i=1}^{n} \left[ P _ {i} \right] =   \left[\sum _ {i=1}^{n}\left[P _ {i} \right] \right] \leq \left[ \sum _ {i=1}^{n}P _ {i} \right]

終わりに

結論は明らかに思えても証明しようとするとそんなに簡単ではないようなものって面白いですよね。 初めてのブログでうまく書けてないかと思いますが、ミス等ありましたら指摘してくださるとありがたく思います。