% -1.5 を四捨五入すると?

\documentclass[dvipdfmx]{jsarticle}
\pagestyle{myheadings}
\markright{tmt's math page}
\def\baselinestretch{1.33}

\usepackage{tikz}

\begin{document}

\section*{◆$-1.5$を四捨五入すると?◆}

$1.5$を小数点以下で四捨五入すると$2$になります。では$-1.5$を小数点以下で四捨五入すると$-2$ですか、それとも$-1$ですか。私からの回答は
\begin{center}
\bfseries どっちでもいいじゃないですか
\end{center}
ということです。でも『それでは答になってないからはっきりさせろ』と言うなら仕方ありません、『$-1$です』と答えましょう。なんだかあやふやな答えかたになってしまいましたが、このような回答になった経緯をお話しましょう。

はじめに「四捨五入」ということばが、大変限定的なことばであることを注意したいと思います。四捨五入とは「$4$は捨てて$5$は繰り入れる」といった内容ですから『じゃあ$144.5$は下の桁から順に繰り入れて$144.5 \to 145 \to 150 \to 200$としてよいのか』と考えたくもなります。四捨五入とは$10$進数表記したときに、端数と思われる部分を省くための\textbf{手続き}です。つまりこういうことです。

$10$進数表記された数があれば、各桁には(小数点以下の桁も含めて)$0$〜$9$までのどれかの数が使われています。そのとき``ある桁以下''を省いて、その数に近い概数で表すのが四捨五入です。そしてその手続きが
\begin{eqnarray*}
省きたい部分の先頭の数字が4(以下)なら切り捨て \\
省きたい部分の先頭の数字が5(以上)なら繰り上げ
\end{eqnarray*}
と約束されているのです。だからそこには先ほどの『じゃあ$144.5$は$\dots$』などという考えはでてきません。桁に使われるのはただ一つの\textbf{数字}だからです。四捨五入がこのような手続きになっているのは、数学的に考えることなく一目瞭然で概数にできるようにとの配慮からでしょうか。

少し具体的に話しましょう。どこの桁で四捨五入しようとも本質は変わりませんから、分かりやすいところで小数点以下を四捨五入して整数値に直すことで考えます。すると四捨五入の操作というのは図のように、数直線の目盛りの前後の数を最寄りの整数で表すことにほかなりません。

\newcommand\RangeL[2]{
\draw[thick, shift={(#1, 0)}] (0, #2 0.3) -- (0, #2 0.6) -- (1, #2 0.6) -- (1, #2 0.3);
}
\newcommand\DPos[1]{
\fill (#1, 0) circle (1pt) node[below] {\fbox{\tiny$#1$}};
}
%
\vspace{10pt}
\begin{center}
\begin{tikzpicture}[scale=1.8]
\draw (0, 0) -- (7, 0);
\foreach \x in {1, 2, ..., 6} \draw (\x, 0.05) -- (\x, -0.05) node[below] {$\x$};
\RangeL{0.5}{}
\RangeL{1.5}{-}
\RangeL{2.5}{}
\RangeL{3.5}{-}
\RangeL{4.5}{}
\RangeL{5.5}{-}
\DPos{0.71}
\DPos{3.36}
\fill (5.92, 0) circle (1pt) node[above] {\fbox{\tiny 5.92}};
\DPos{6.49}
\end{tikzpicture}
\end{center}

実は四捨五入で問題になるのは端数が$0.5$ちょうどのときなのです。端数が$0.5$より少々小さければ最寄りの目盛りは切り捨てた数値と一致し、$0.5$より少々大きければ最寄りの目盛りは繰り上げた数値と一致します。ところが端数が$0.5$ちょうどのときは左右にあるどちらの目盛りも最寄りということになっています。そこで、この場合には繰り上げるというのが四捨五入の約束なのです。そしてこの約束こそが数学的な思考をせずに、桁の数字を一瞥するだけで四捨五入できるようにしているのです。なぜなら$0.5$ちょうどを切り捨てる約束にした場合には、小数点以下で四捨五入するとき$2.5 \to 2$、$2.501 \to 3$となって、小数第$1$位の$5$を見ただけでは切り捨てか繰り上げかの判断ができないのですから。

さあ話を負の数に広げましょう。まだ「小数点以下の四捨五入」に限定して話をしていますが、これまでのことを数学らしく表現してみます。ある数$x$を整数部分$a$と小数部分$b$ $(0 \le b < 1)$に分けて$x = a+b$で表します。すると四捨五入とは
\begin{center}
\begin{tabular}{lll}
$0 \le b < 0.5$\ のとき & $x\to a$ & (切り捨て) \\
$0.5 \le b < 1$\ のとき & $x\to a+1$ & (繰り上げ)
\end{tabular}
\end{center}
と定義できると思います。

ところでふつう、四捨五入は正の数に対して行うものと相場が決まっているようなものですが、これをそのまま負の数での四捨五入に拡張するのはかまわないでしょう。数直線上で考えた方が分かりやすいでしょう。すると負の数まで拡張した四捨五入というのは図のような範囲で最寄りの整数で表すことです。

\newcommand\RangeCC[3]{
\draw[thick, shift={(#1, 0)}] (0, #2 0.3) -- (0, #2 0.6) -- node[above] {\footnotesize $#3$} (1, #2 0.6) -- (1, #2 0.3);
\fill (#1, #20.25) circle (1.2pt);
\draw (#1+1, #20.25) circle (1.2pt);
}
%
\vspace{10pt}
\begin{center}
\begin{tikzpicture}[scale=1.8]
\draw (-4, 0) -- (3, 0);
\foreach \x in {-3, -2, ..., 2} \draw (\x, 0.05) -- (\x, -0.05) node[below] {$\x$};
\RangeCC{-3.5}{}{}
\RangeCC{-2.5}{-}{(-2)}
\RangeCC{-1.5}{}{(-1)}
\RangeCC{-0.5}{-}{}
\RangeCC{ 0.5}{}{}
\RangeCC{ 1.5}{-}{}
\DPos{-1.5}
\end{tikzpicture}
\end{center}

数直線に図示した範囲の数が四捨五入されて最寄りの目盛りの値になることが分かると思います。ここで図中の \tikz \draw (0, 0) circle (2pt); はその位置にある数を「含まない」ことを意味し、\tikz \fill (0, 0) circle (2pt); はその位置にある数を「含む」ことを意味します。ということは、数直線上の$-1.5$は$-2$側の範囲には含まれず$-1$側の範囲に含まれることになります。すなわち$-1.5$を四捨五入すると$-1$になるのです。

このことを数直線でなく式の上で確認してみます。ある数$x$を整数部分$a$と小数部分$b$ $(0 \leq b < 1)$に分けて$x = a+b$で表す場合、$1.5$であれば$1+0.5$としました。それならということで$-1.5$ではついつい$-(1+0.5)$としてしまうでしょう。この日常的な感覚が混乱のもとにもなっています。実は$-1.5$は$-2+0.5$としなければ$b$ $(0 \leq b < 1)$の条件を満たさないのです。$-(1+0.5) = -1+(-0.5)$としてしまったら$b$の部分が$0 \leq b < 1$ではありません。そうすると$-1.5 = -2+0.5$は
\begin{center}
\begin{tabular}{lll}
$0 \le b < 0.5$\ のとき & $x\to a$ & (切り捨て) \\
$0.5 \le b < 1$\ のとき & $x\to a+1$ & (繰り上げ)
\end{tabular}
\end{center}
に照らして$-2+1 = -1$となるのです。これで結論がでたわけですが、まだ私がはじめに回答した経緯は話していませんね。

数学的に考えると四捨五入の解釈はこれでよいのです。ところで、整数値を扱うときに$[x]$で表現する記号に出会うことがあります。この記号は「ガウスの記号」と呼ばれるもので「$x$を\textbf{超えない最大の}整数」をさします。ただこの記号は古臭さが漂うので、代わりに$\lfloor x \rfloor$と書くことにします\footnote{$\lfloor x \rfloor$と対(つい)になる記号で、$x$を下まわらない最小の整数を$\lceil x \rceil$と表しています。大抵のプログラミング言語では、$\lfloor x \rfloor$に\texttt{floor}関数、$\lceil x \rceil$に\texttt{ceiling}関数が使えます。}。少し分かりづらい表現かもしれないので例をあげましょう。$\lfloor 4.73 \rfloor = 4$、$\lfloor 0.99 \rfloor = 0$、$\lfloor 2 \rfloor = 2$です。最後の式の$\lfloor 2 \rfloor$は$2$を超えなければよいのですから、確かに$\lfloor 2\rfloor = 2$は条件を満たします。では、次の例はどうでしょう。$\lfloor -3.1\rfloor = -4$。$\lfloor -3.1 \rfloor$は$-3.1$を超えてはいけないのです。するとその手前の整数は数直線上では$-3.1$の左にある数です。その最大の数は$-4$です。

$\lfloor x \rfloor$も小数点以下に何がしかの値をもつ数を、数直線上の最寄りの目盛りの整数値にする点ではいまの四捨五入の例と同じですが、その範囲は図のようになります。

\vspace{10pt}
\begin{center}
\begin{tikzpicture}[scale=1.8]
\draw (-5, 0) -- (2, 0);
\foreach \x in {-4, -3, ..., 1} \draw (\x, 0.05) -- (\x, -0.05) node[above right] {$\x$};
\RangeCC{-4}{}{(-4)}
\RangeCC{-3}{-}{(-3)}
\RangeCC{-2}{}{(-2)}
\RangeCC{-1}{-}{(-1)}
\RangeCC{ 0}{}{(0)}
\RangeCC{ 1}{-}{(1)}
\DPos{-3.1}
\DPos{0.99}
\end{tikzpicture}
\end{center}

四捨五入の範囲図とガウス記号の範囲図を比較してわかるように、$x$を四捨五入するというのは$\lfloor x+0.5 \rfloor$の値を求めることだったのです。

ところが四捨五入ということばは、数学の中に登場するより生活の中で活躍するものです。数学の中で四捨五入が必要なら、いま述べたように$\lfloor x+0.5 \rfloor$を使えば済むからです。それに、あえて四捨五入という手続きにすることで手軽に概数を作れることが四捨五入の特徴なのです。だからいくら
\[
(-1.5の四捨五入) = \lfloor -1.5+0.5 \rfloor = \lfloor -1 \rfloor = -1
\]
と言ったところで実感がわかないでしょう。むしろ$1.5$を四捨五入して$2$になるのであれば、$-1.5$を四捨五入して$-2$とする方が自然というものです。

四捨五入を数学的に$\lfloor x+0.5 \rfloor$と解釈するならば、$-1.5$は四捨五入によって$-1$となります。しかし四捨五入の簡便さに重きを置けば、その手続きの方法から$-1.5$は四捨五入によって$-2$となります。そのため私は、はじめに『どっちでもいいじゃないですか』と答えたわけです。でも、問い詰められたら私は数学寄りの立場をとるでしょう。

そもそも四捨五入というものは正数に対して行われる性質が強いわけです。普段なら負の数に対して四捨五入はしないでしょうが、会計で赤字がでたときに四捨五入することはあると思います。たとえばMicrosoft Excelには四捨五入の関数で、\verb|ROUND|や\verb|ROUNDUP|などが用意されています。私が試したところ『\verb|=ROUND(-1.5, 0)|は \verb|-2|』でした。たしかにこの方が実用的かもしれません。

\end{document}