Home丸め方の基礎最近接丸め五捨六入エクセル関数五捨五超入銀行丸め

1. 床関数と天井関数

1. 床関数と天井関数
2. 切り捨てと切り上げ
3. 四捨五入と五捨五超入
4. 銀行丸め
5. 負数の丸め方
6. 丸めの幅

床関数・天井関数

実数 x に対して,x 以下の整数のうち最大のものを ⌊x⌋ と表し,床関数という。 x 以上の整数のうち最小のものを ⌈x⌉ と表し,天井関数という。 \(\mathbb{Z}\)は整数全体の集合である。 \[ \lfloor x\rfloor=\max \{n\in \mathbb{Z}\mid n\le x\},\qquad \lceil x\rceil=\min \{n\in \mathbb{Z}\mid x\le n\} \] 床関数 ⌊x⌋ は x−1<n≤x を満たす整数 n で,端数の切り捨てを表す。 天井関数 ⌈x⌉ は x≤n<x+1 を満たす整数 n で,端数の切り上げを表す。 \[ x-1<\lfloor x\rfloor \le x,\qquad x\le \lceil x\rceil <x+1 \tag{1} \]

床関数・天井関数の性質

床関数 y=⌊x⌋ のグラフを, x方向に1,y方向に1だけ平行移動しても,グラフは変化しない。 天井関数 y=⌈x⌉ も同様である。 \begin{equation} k\in \mathbb{Z}\implies \lfloor x+k\rfloor =\lfloor x\rfloor +k,\qquad \lceil x+k\rceil =\lceil x\rceil +k \tag{2} \end{equation} たとえば x=1.23,k=4 のとき,上式の左辺と右辺は一致する。 \begin{align*} &\lfloor 1.23+4\rfloor=\lfloor 5.23\rfloor=5,\qquad \lfloor 1.23\rfloor +4=1+4=5 \\ &\lceil 1.23+4\rceil=\lceil 5.23\rceil=6,\qquad \lceil 1.23\rceil +4=2+4=6 \end{align*} 符号を換えると,床関数と天井関数を相互に変換できる。 \begin{equation} \lfloor x\rfloor =-\lceil -x\rceil,\qquad \lceil x\rceil =-\lfloor -x\rfloor \tag{3} \end{equation} たとえば x=1.23 のとき,上式の左辺と右辺は一致する。 \begin{align*} &\lfloor 1.23\rfloor=1,\qquad -\lceil -1.23\rceil =-(-1)=1 \\ &\lceil 1.23\rceil=2,\qquad -\lfloor -1.23\rfloor =-(-2)=2 \end{align*}

次のページへ

1 2 3 4 5 6 Next

2. 切り捨てと切り上げ

1. 床関数と天井関数
2. 切り捨てと切り上げ
3. 四捨五入と五捨五超入
4. 銀行丸め
5. 負数の丸め方
6. 丸めの幅

丸め

実数 x を,それに近接する整数に置き換えることを「丸める」という。 切り捨て,切り上げ,四捨五入,五捨五超入,銀行丸め等の方法がある。 どの丸め方でも,整数 x は,x に丸められ,変化しない。 \[ \text{\(x\)が整数ならば,}\qquad x\xrightarrow{丸め}x \] 正の実数 x を整数部 Int(x) と小数部 Frac(x) に分解すると, 整数部は Int(x)=⌊x⌋,小数部は Frac(x)=x-⌊x⌋ と表せる。 小数部は常に 0≤Frac(x)<1 の範囲内にある。 \begin{equation} x=\operatorname{Int}(x)+\operatorname{Frac}(x),\qquad \begin{cases} \operatorname{Int}(x)=\lfloor x\rfloor \\ \operatorname{Frac}(x)=x-\lfloor x\rfloor \end{cases} \end{equation}

切り捨て(round_floor)

小数部が 0 のときは丸められないので考えなくてよい。 小数部を切り捨てて 0 に置き換えることを切り捨てという。 区間 (0, 1) は,0<x<1 を満たす実数 x の集まりである。 \begin{align*} &\text{小数部} &&\text{切り捨て} \\ &(0.0,\;1.0) &&\to 0 \end{align*} 切り捨ては床関数 ⌊x⌋ で求めることができる。 \begin{gather*} x\xrightarrow{切り捨て}\lfloor x\rfloor \\ 3.14\xrightarrow{切り捨て} 3,\qquad 4.5\xrightarrow{切り捨て} 4,\qquad 5.71\xrightarrow{切り捨て} 5 \end{gather*}

切り上げ(round_ceiling)

小数部が 0 のときは丸められないので考えなくてよい。 小数部が 0 でないとき,小数部を切り上げて 1 に置き換える(整数部に1を加える)ことを切り上げという。 \begin{align*} &\text{小数部} &&\text{切り上げ} \\ &(0.0,\;1.0) &&\to 1 \end{align*} 切り上げは天井関数 ⌈x⌉ で求めることができる。 \begin{gather*} x\xrightarrow{切り上げ}\lceil x\rceil \\ 3.14\xrightarrow{切り上げ} 4,\qquad 4.5\xrightarrow{切り上げ} 5,\qquad 5.71\xrightarrow{切り上げ} 6 \end{gather*}

次のページへ

1 2 3 4 5 6 Next

3. 四捨五入と五捨五超入

1. 床関数と天井関数
2. 切り捨てと切り上げ
3. 四捨五入と五捨五超入
4. 銀行丸め
5. 負数の丸め方
6. 丸めの幅

四捨五入

小数部が 0.5 未満なら切り捨てて 0 に置き換え, 小数部が 0.5 以上なら切り上げて 1 に置き換える(整数部に1を加える)ことを四捨五入という。 区間 (0, 0.5) は,0<x<0.5 を満たす実数 x の集まりである。 0.5 は切り上げられる。 \begin{align*} &\text{小数部} &&\text{四捨五入} \\ &(0.0,\;0.5) &&\to 0 \\ &[0.5,\;1.0) &&\to 1 \end{align*} 四捨五入は床関数を用いて ⌊x+0.5⌋ で求めることができる。 \begin{gather*} x\xrightarrow{四捨五入}\lfloor x+0.5\rfloor \\ 3.14\xrightarrow{四捨五入} 3,\qquad 4.5\xrightarrow{四捨五入} 5,\qquad 5.71\xrightarrow{四捨五入} 6 \end{gather*}

五捨五超入

小数部が 0.5 以下なら切り捨てて 0 に置き換え, 小数部が 0.5 を超えるなら切り上げて 1 に置き換える(整数部に1を加える)ことを五捨五超入という。 区間 (0, 0.5] は,0<x≤0.5 を満たす実数 x の集まりである。 0.5 は切り捨てられる。 \begin{align*} &\text{小数部} &&\text{五捨五超入} \\ &(0.0,\;0.5] &&\to 0 \\ &(0.5,\;1.0) &&\to 1 \end{align*} 五捨五超入は天井関数を用いて ⌈x−0.5⌉ で求めることができる。 \begin{gather*} x\xrightarrow{五捨五超入}\lceil x-0.5\rceil \\ 3.14\xrightarrow{五捨五超入} 3,\qquad 4.5\xrightarrow{五捨五超入} 4,\qquad 5.71\xrightarrow{五捨五超入} 6 \end{gather*}

次のページへ

1 2 3 4 5 6 Next

4. 銀行丸め

1. 床関数と天井関数
2. 切り捨てと切り上げ
3. 四捨五入と五捨五超入
4. 銀行丸め
5. 負数の丸め方
6. 丸めの幅

銀行丸め(round_half_even)

銀行丸め(Banker's rounding)はJIS丸め,ISO丸めともよばれ, JIS Z 8401:2019 規則Aに定められている。 実数 x に銀行丸めを行った結果を ⌊x⌉ と表す。

小数部による場合分け

実数 x に対して, x に最も近い整数が1つだけある(小数部が0.5でない)場合はその整数に丸め, x に最も近い整数が2つある(小数部が0.5である)場合はそれらの整数のうち偶数であるほうに丸める。 \begin{gather*} x\xrightarrow{銀行丸め} \lfloor x\rceil=\left\{ \begin{array}{p{12zw}l} \text{\(x\)に最も近い整数}\quad \operatorname{Frac}(x)\ne 0.5\\ \text{\(x\)に最も近い偶数}\quad \operatorname{Frac}(x)=0.5 \end{array}\right. \end{gather*}

整数部による場合分け

実数 x の銀行丸めは, x の整数部が偶数の場合は五捨五超入に等しく, x の整数部が奇数の場合は四捨五入に等しい。 \begin{gather*} x\xrightarrow{銀行丸め} \lfloor x\rceil=\begin{cases} \text{\(x\)の五捨五超入}\quad \text{\(\operatorname{Int}(x)\)が偶数}\\ \text{\(x\)の四捨五入}\quad \text{\(\operatorname{Int}(x)\)が奇数} \end{cases} \\ 1.5\xrightarrow{銀行丸め} 2,\qquad 1.9\xrightarrow{銀行丸め} 2,\qquad 2.5\xrightarrow{銀行丸め} 2 \end{gather*}

次のページへ

1 2 3 4 5 6 Next

5. 負数の丸め方

1. 床関数と天井関数
2. 切り捨てと切り上げ
3. 四捨五入と五捨五超入
4. 銀行丸め
5. 負数の丸め方
6. 丸めの幅

負数の丸め

負の実数 x を丸める場合は, 負数 x の符号を反転させた −x を正数として丸め,その結果の符号を再度反転させる。 たとえば,−3.14を切り捨てる場合は \[ -3.14\xrightarrow{符号反転}3.14\xrightarrow{切り捨て} 3\xrightarrow{符号反転}-3 \] とする。 正数 x の切り捨ては ⌊x⌋, 負数 x の切り捨ては −⌊−x⌋ で求められる。

ただし,この規則を適用せず, 正数も負数も常に ⌊x⌋ で切り捨てるほうが適切な場合もある。

切り捨て(round_down)

正数 x を ⌊x⌋ で,負数 x を −⌊−x⌋ で丸める。 床関数・天井関数の性質から,−⌊−x⌋=⌈x⌉ である。 この関数を F(x) と表すことにする。 \begin{gather*} x\xrightarrow{切り捨て} F(x)=\begin{cases} \lfloor x\rfloor &x\ge 0\\\lceil x\rceil &x\le 0 \end{cases} \\ -3.14\xrightarrow{切り捨て} -3,\qquad -4.5\xrightarrow{切り捨て} -4,\qquad -5.71\xrightarrow{切り捨て} -5 \end{gather*}

切り上げ(round_up)

正数 x を ⌈x⌉ で,負数 x を −⌈−x⌉ で丸める。 床関数・天井関数の性質から,−⌈−x⌉=⌊x⌋ である。 この関数を C(x) と表すことにする。 \begin{gather*} x\xrightarrow{切り上げ} C(x)=\begin{cases} \lceil x\rceil &x\ge 0\\\lfloor x\rfloor &x\le 0 \end{cases} \\ -3.14\xrightarrow{切り上げ} -4,\qquad -4.5\xrightarrow{切り上げ} -5,\qquad -5.71\xrightarrow{切り上げ} -6 \end{gather*}

四捨五入(round_half_up)

正数 x を ⌊x+0.5⌋ で,負数 x を −⌊−x+0.5⌋ で丸める。 床関数・天井関数の性質から, −⌊−x+0.5⌋=−⌊−(x−0.5)⌋=⌈x−0.5⌉ である。 この関数を R(x) と表すことにする。 \begin{gather*} x\xrightarrow{四捨五入} R(x)=\begin{cases} \lfloor x+0.5\rfloor &x>-0.5\\\lceil x-0.5\rceil &x<0.5 \end{cases} \\ -3.14\xrightarrow{四捨五入} -3,\qquad -4.5\xrightarrow{四捨五入} -5,\qquad -5.71\xrightarrow{四捨五入} -6 \end{gather*}

五捨五超入(round_half_down)

正数 x を ⌈x−0.5⌉ で,負数 x を −⌈−x−0.5⌉ で丸める。 床関数・天井関数の性質から, −⌈−x−0.5⌉=−⌈−(x+0.5)⌉=⌊x+0.5⌋ である。 この関数を Ř(x) と表すことにする。 \begin{gather*} x\xrightarrow{五捨五超入} \check{R}(x)=\begin{cases} \lceil x-0.5\rceil &x>-0.5\\\lfloor x+0.5\rfloor &x<0.5 \end{cases} \\ -3.14\xrightarrow{五捨五超入} -3,\qquad -4.5\xrightarrow{五捨五超入} -4,\qquad -5.71\xrightarrow{五捨五超入} -6 \end{gather*}

次のページへ

1 2 3 4 5 6 Next

6. 丸めの幅

1. 床関数と天井関数
2. 切り捨てと切り上げ
3. 四捨五入と五捨五超入
4. 銀行丸め
5. 負数の丸め方
6. 丸めの幅

丸めの幅を変更する

整数に丸める場合だけでなく,1以外の値を単位として丸めることもできる。 たとえば,x=1234 を d=10 を単位として四捨五入する場合は, x=1234 を d=10 で割った値を四捨五入し,その結果に d=10 を掛ければよい。 \[ 1234\xrightarrow{\div 10}123.4\xrightarrow{四捨五入} 123\xrightarrow{\times 10}1230 \] x=3.1415 を d=0.001 を単位として四捨五入する場合は, x=3.1415 を d=0.001 で割った値を四捨五入し,その結果に d=0.001 を掛ける。 \[ 3.1415\xrightarrow{\div 0.001}3141.5\xrightarrow{四捨五入} 3142\xrightarrow{\times 0.001}3.142 \] 丸めの幅を1として,実数 x を整数に丸めるための関数を一般に f(x) とする。 このとき,丸めの幅を d>0 として,実数 x を d の整数倍に丸めるための関数は \begin{equation} f(x\div d)\times d \end{equation} となる。 この関数を fd(x) と表すことにする。

切り捨て(round_down)

正数 x を d を丸めの幅として切り捨てるとき, \[ \lfloor x\div d\rfloor \times d \] 負数 x を d を丸めの幅として切り捨てるとき, \[ \lceil x\div d\rceil \times d \] であるから, 任意の実数 x を d を丸めの幅として切り捨てる関数 Fd(x) は \[ F^d(x)=\begin{cases} \lfloor x\div d\rfloor \times d &x\ge 0\\ \lceil x\div d\rceil \times d &x\le 0 \end{cases} \] と表せる。

切り上げ(round_up)

正数 x を d を丸めの幅として切り上げるとき, \[ \lceil x\div d\rceil \times d \] 負数 x を d を丸めの幅として切り上げるとき, \[ \lfloor x\div d\rfloor \times d \] であるから, 任意の実数 x を d を丸めの幅として切り上げる関数 Cd(x) は \[ C^d(x)=\begin{cases} \lceil x\div d\rceil \times d &x\ge 0\\ \lfloor x\div d\rfloor \times d &x\le 0 \end{cases} \] と表せる。

四捨五入(round_half_up)

正数 x を d を丸めの幅として四捨五入するとき, \[ \lfloor x\div d+0.5\rfloor \times d \] 負数 x を d を丸めの幅として四捨五入するとき, \[ \lceil x\div d-0.5\rceil \times d \] であるから, 任意の実数 x を d を丸めの幅として四捨五入する関数 Rd(x) は \[ R^d(x)=\begin{cases} \lfloor x\div d+0.5\rfloor \times d &x\div d>-0.5\\ \lceil x\div d-0.5\rceil \times d &x\div d<0.5 \end{cases} \] と表せる。

五捨五超入(round_half_down)

正数 x を d を丸めの幅として五捨五超入するとき, \[ \lceil x\div d-0.5\rceil \times d \] 負数 x を d を丸めの幅として五捨五超入するとき, \[ \lfloor x\div d+0.5\rfloor \times d \] であるから, 任意の実数 x を d を丸めの幅として五捨五超入する関数 Řd(x) は \[ \check{R}{}^d(x)=\begin{cases} \lceil x\div d-0.5\rceil \times d &x\div d>-0.5\\ \lfloor x\div d+0.5\rfloor \times d &x\div d<0.5 \end{cases} \] と表せる。

銀行丸め(round_half_even)

実数 x を d を丸めの幅として銀行丸めをする関数は \[ \lfloor x\div d\rceil \times d \] と表せる。 これを,x÷d の小数部が0.5であるかどうかで場合分けすると \[ \begin{cases} \lfloor x\div d+0.5\rfloor \times d =\lceil x\div d-0.5\rceil \times d &\operatorname{Frac}(x\div d)\ne 0.5\\ \lfloor x\div (2d)+0.5\rfloor \times 2d =\lceil x\div (2d)-0.5\rceil \times 2d &\operatorname{Frac}(x\div d)=0.5 \end{cases} \] x÷d の整数部が偶数であるかどうかで場合分けすると \[ \begin{cases} \lceil x\div d-0.5\rceil \times d &\text{$\operatorname{Int}(x\div d)$が偶数}\\ \lfloor x\div d+0.5\rfloor \times d &\text{$\operatorname{Int}(x\div d)$が奇数} \end{cases} \] のように表現することもできる。

最後のページです

1 2 3 4 5 6 Home

数値の丸め方

Home丸め方の基礎最近接丸め五捨六入エクセル関数五捨五超入銀行丸め

2012.12.24 作成 / 2020.4.24 更新

Home › 数値の丸め方