切り捨て・切り上げ
三重大学の奥村先生のblogに、「Excelが計算ミス」というスレッド(?)が上がっています。それを見て思い出した数年前の話があって、簡単な話なので、ここに書きます。
【問題】INT関数というのは小数部分を消去する「切り捨て(切り下げ)関数」ですが、では「小数部分を切り上げる関数」を簡単に作れ。
【解答・解説】Excel のマニュアルを引くと ROUNDUPが紹介されていますが、引数の個数(arity)が2で、ちょっと複雑に見えるんですよね。CELLINGは負の数にはうまく動かない。INTと同じようにできないかと考えてみると、うまく組み合わせるだけでできるということがわかりました。
y=INT(x)のグラフをxy平面に書いてみると、●−○ を使った階段関数になります。(●は端点含む、○は端点除く。)で、y=f(x)=切り上げ(x)は、○−● を使います。左右対象になっているところがポイントで、そこに注目すると
f(x)= -INT(-x)とすればいいことがわかります。実際に、f(3.5)=-INT(-3.5)=-(-4)=4, f(5)=-INT(-5)=5 となります。で、これが簡単にできることなのに、検索しても意外にのってなかったりします。
こういうパズルは、プログラミングと似ていますが、ちょっとだけ違うのかなぁと思いました。
| 固定リンク
| コメント (3)
| トラックバック (0)
最近のコメント