Home 丸め方の基礎 最近接丸め 五捨六入 エクセル関数 五捨五超入 銀行丸め
1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め
数値=x,桁数=k のとき,ROUNDDOWN 関数によって,数値 x が 10−k ごとに切り捨てられる。 0に近づく方向に丸められる。 TRUNC 関数も同様である。 \[ \text{ROUNDDOWN}(x,k)=\begin{cases} \lfloor x\times 10^k\rfloor \div 10^k &x\ge 0\\ \lceil x\times 10^k\rceil \div 10^k &x\lt 0 \end{cases} \] ROUNDDOWN 関数の結果は次のとおり。
EXCELの数式 基準値 結果 =ROUNDDOWN(1234.56,−2) 100 1200 =ROUNDDOWN(1234.56,0) 1 1234 =ROUNDDOWN(1234.56,1) 0.1 1234.5 =ROUNDDOWN(−1234.56,0) 1 −1234
数値=x,桁数=d,モード=0 のとき,FLOOR.MATH 関数によって,数値 x が d ごとに切り捨てられる。 モード=0 のとき,負の無限大の方向に丸められる。 モードを省略すると0とみなされる。 FLOOR.PRECISE 関数(,INT 関数)も同様である。 \[ \text{FLOOR.MATH}(x,d,0)=\lfloor x\div d\rfloor \times d \] 数値=x,桁数=d,モード=1 のとき,FLOOR.MATH 関数によって,数値 x が d ごとに切り捨てられる。 モード=1 のとき,0に近づく方向に丸められる。 \[ \text{FLOOR.MATH}(x,d,1)=\begin{cases} \lfloor x\div d\rfloor \times d &x\ge 0\\ \lceil x\div d\rceil \times d &x\lt 0 \end{cases} \] FLOOR.MATH 関数の結果は次のとおり。
EXCELの数式 基準値 結果 =FLOOR.MATH(1234.56,100) 100 1200 =FLOOR.MATH(1234.56,1) 1 1234 =FLOOR.MATH(1234.56,0.1) 0.1 1234.5 =FLOOR.MATH(−1234.56,1) 1 −1235 =FLOOR.MATH(−1234.56,1,1) 1 −1234
最上位の桁は INT(LOG10(数値)) または INT(LOG(数値)) で求められる。
EXCELの数式 結果 =INT(LOG(2000)) 3 =INT(LOG(3)) 0 =INT(LOG(0.07)) −2
ROUNDDOWN(数値,有効桁−1−INT(LOG(数値))) とすると,指定した有効桁で切り捨てることができる。
EXCELの数式 有効桁 結果 =ROUNDDOWN(1234.56,1−1−INT(LOG(1234.56))) 1 1000 =ROUNDDOWN(1234.56,3−1−INT(LOG(1234.56))) 3 1230 =ROUNDDOWN(1234.56,5−1−INT(LOG(1234.56))) 5 1234.5
次のページへ
1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め
数値=x,桁数=k のとき,ROUNDUP 関数によって,数値 x が 10−k ごとに切り上げられる。 0から離れる方向に丸められる。 \[ \text{ROUNDUP}(x,k)=\begin{cases} \lceil x\times 10^k\rceil \div 10^k &x\ge 0\\ \lfloor x\times 10^k\rfloor \div 10^k &x\lt 0 \end{cases} \] ROUNDUP 関数の結果は次のとおり。
EXCELの数式 基準値 結果 =ROUNDUP(1234.56,−2) 100 1300 =ROUNDUP(1234.56,0) 1 1235 =ROUNDUP(1234.56,1) 0.1 1234.6 =ROUNDUP(−1234.56,0) 1 −1235
数値=x,桁数=d,モード=0 のとき,CEILING.MATH 関数によって,数値 x が d ごとに切り上げられる。 モード=0 のとき,正の無限大の方向に丸められる。 モードを省略すると0とみなされる。 CEILING.PRECISE,ISO.CEILING 関数も同様である。 \[ \text{CEILING.MATH}(x,d,0)=\lceil x\div d\rceil \times d \] 数値=x,桁数=d,モード=1 のとき,CEILING.MATH 関数によって,数値 x が d ごとに切り上げられる。 モード=1 のとき,0から離れる方向に丸められる。 \[ \text{CEILING.MATH}(x,d,1)=\begin{cases} \lceil x\div d\rceil \times d &x\ge 0\\ \lfloor x\div d\rfloor \times d &x\lt 0 \end{cases} \] CEILING.MATH 関数の結果は次のとおり。
EXCELの数式 基準値 結果 =CEILING.MATH(1234.56,100) 100 1300 =CEILING.MATH(1234.56,1) 1 1235 =CEILING.MATH(1234.56,0.1) 0.1 1234.6 =CEILING.MATH(−1234.56,1) 1 −1234 =CEILING.MATH(−1234.56,1,1) 1 −1235
EVEN(数値) は偶数に切り上げる関数で,CEILING.MATH(数値,2,1) と同じように動作する。 \[ \text{ODD}(x)=\begin{cases} \lceil (x+1)\div 2\rceil \times 2-1 &x\ge 0\\\lfloor (x-1)\div 2\rfloor \times 2+1 &x\lt 0 \end{cases} \] ODD は奇数に切り上げる関数であるが,奇数に切り上げることは「丸め」ではなく,ODD(0) がうまく定義できない。
|
|
最上位の桁は INT(LOG10(数値)) または INT(LOG(数値)) で求められる。
EXCELの数式 結果 =INT(LOG(2000)) 3 =INT(LOG(3)) 0 =INT(LOG(0.07)) −2
ROUNDUP(数値,有効桁−1−INT(LOG(数値)) とすると,指定した有効桁で切り上げることができる。
EXCELの数式 有効桁 結果 =ROUNDUP(1234.56,1−1−INT(LOG(1234.56))) 1 2000 =ROUNDUP(1234.56,3−1−INT(LOG(1234.56))) 3 1240 =ROUNDUP(1234.56,5−1−INT(LOG(1234.56))) 5 1234.6
次のページへ
1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め
数値=x,桁数=k のとき,ROUND 関数によって,数値 x が 10−k ごとに四捨五入される。 半整数が0から離れる方向に丸められる。 \[ \text{ROUND}(x,k)=\begin{cases} \lfloor x\times 10^k+0.5\rfloor \div 10^k &x\ge 0\\ \lceil x\times 10^k-0.5\rceil \div 10^k &x\lt 0 \end{cases} \] ROUND 関数の結果は次のとおり。
EXCELの数式 基準値 結果 =ROUND(1234.56,−2) 100 1200 =ROUND(1234.56,0) 1 1235 =ROUND(1234.56,1) 0.1 1234.6 =ROUND(−1234.56,0) 1 −1235
最上位の桁は INT(LOG10(数値)) または INT(LOG(数値)) で求められる。
EXCELの数式 結果 =INT(LOG(2000)) 3 =INT(LOG(3)) 0 =INT(LOG(0.07)) −2
ROUND(数値,有効桁−1−INT(LOG(数値)) とすると,指定した有効桁で四捨五入することができる。
EXCELの数式 有効桁 結果 =ROUND(1234.56,1−1−INT(LOG(1234.56))) 1 1000 =ROUND(1234.56,3−1−INT(LOG(1234.56))) 3 1230 =ROUND(1234.56,5−1−INT(LOG(1234.56))) 5 1234.6
気温を度の単位に丸めるとき,0度以上なら四捨五入,0度未満なら五捨六入(五捨五超入)する。 四捨五入をする関数を R(x),五捨五超入をする関数を Ř(x) とする。 \[ R(x)=\begin{cases} \lfloor x+0.5\rfloor &x\ge 0\\\lceil x-0.5\rceil &x\lt 0 \end{cases},\qquad \check{R}(x)=\begin{cases} \lceil x-0.5\rceil &x\ge 0\\\lfloor x+0.5\rfloor &x\lt 0 \end{cases} \] 気温が0度以上なら四捨五入で R(x)=⌊x+0.5⌋, 0度未満なら五捨五超入で Ř(x)=⌊x+0.5⌋ となる。 つまり,常に ⌊x+0.5⌋ でよい。 \[ \lfloor x+0.5\rfloor \] 気温は FLOOR.MATH(気温+0.5,1) または INT(気温+0.5) で丸めることができる。 ROUND 関数は使えない。
EXCELの数式 気温 結果 =INT(1.5+0.5) 1.5 2 =INT(0.5+0.5) 0.5 1 =INT(−0.5+0.5) −0.5 0 =INT(−1.5+0.5) −1.5 −1
丸めの幅が 5 のとき,次のEXCEL数式で二捨三入・七捨八入をすることができる。 ただし負の数値に対して MROUND 関数を用いると #NUM! エラーになる。
EXCELの数式 =ROUND(数値/5,0)∗5 =ROUND(数値∗2,−1)/2 =MROUND(数値,5)
丸めの幅が 50 のとき,次のEXCEL数式で二捨三入・七捨八入をすることができる。 ただし負の数値に対して MROUND 関数を用いると #NUM! エラーになる。
EXCELの数式 =ROUND(数値/5,−1)∗5 =ROUND(数値∗2,−2)/2 =MROUND(数値,50)
丸めの幅が 0.5 のとき,次のEXCEL数式で二捨三入・七捨八入をすることができる。 ただし負の数値に対して MROUND 関数を用いると #NUM! エラーになる。
EXCELの数式 =ROUND(数値/5,1)∗5 =ROUND(数値∗2,0)/2 =MROUND(数値,0.5)
次のページへ
1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め
これらの関数は,数値と基準値の符号が異なると #NUM! エラーになり,使い勝手が悪い。
数値=x,基準値=d>0 のとき,FLOOR 関数によって,数値 x が d ごとに切り捨てられる。 x≥0 のときは FLOOR(x,d) の形で使う。 \[ \text{FLOOR}(x,d)=\lfloor x\div d\rfloor \times d \] d を形式的に −d に置き換えると,切り上げになる。 x<0 のときは FLOOR(x,−d) の形で使う。 \begin{align*} \text{FLOOR}(x,-d) &=\lfloor x\div (-d)\rfloor \times (-d) =-\lfloor -(x\div d)\rfloor \times d\\ &=\lceil x\div d\rceil \times d \end{align*} つまり,FLOOR(x,d) 関数の定義は常に ⌊x÷d⌋×d になっていて, x≥0 の場合は FLOOR(x,d) の形で,x<0 の場合は FLOOR(x,−d) の形で入力させる仕様で,ユーザーに負担をかけている。 \[ \begin{cases} \text{FLOOR}(x,d)=\lfloor x\div d\rfloor \times d &x\ge 0\\ \text{FLOOR}(x,-d)=\lceil x\div d\rceil \times d &x\lt 0 \end{cases} \] 正の数値の対して正の基準値,負の数値に対して負の基準値を用いると,次のEXCEL数式で切り捨てをすることができる。 FLOOR.MATH( , ,1) のほうが使い勝手がよい。
EXCELの数式 基準値 丸めの幅 結果 =FLOOR(38.2,1) 1 1 38 =FLOOR(−38.2,−5) −5 5 −35
同様に CEILING(x,d) 関数の定義は常に ⌈x÷d⌉×d になっていて, x≥0 の場合は CEILING(x,d) の形で,x<0 の場合は CEILING(x,−d) の形で入力する。 \[ \begin{cases} \text{CEILING}(x,d)=\lceil x\div d\rceil \times d &x\ge 0\\ \text{CEILING}(x,-d)=\lfloor x\div d\rfloor \times d &x\lt 0 \end{cases} \] 正の数値の対して正の基準値,負の数値に対して負の基準値を用いると,次のEXCEL数式で切り上げをすることができる。 CEILING.MATH( , ,1) のほうが使い勝手がよい。
EXCELの数式 基準値 丸めの幅 結果 =CEILING(38.2,1) 1 1 39 =CEILING(−38.2,−5) −5 5 −40
MROUND(x,d) 関数の定義は常に ⌊x÷d+0.5⌋×d になっていて, x≥0 の場合は MROUND(x,d) の形で,x<0 の場合は MROUND(x,−d) の形で入力する。 \[ \begin{cases} \text{MROUND}(x,d)=\lfloor x\div d+0.5\rfloor \times d &x\ge 0\\ \text{MROUND}(x,-d)=\lceil x\div d-0.5\rceil \times d &x\lt 0 \end{cases} \] 正の数値の対して正の基準値,負の数値に対して負の基準値を用いると,次のEXCEL数式で四捨五入をすることができる。
EXCELの数式 基準値 丸めの幅 結果 =MROUND(38.2,1) 1 1 38 =MROUND(−38.2,−5) −5 5 −40
次のページへ
1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め
数値=x を基準値=d ごとに五捨五超入するようなEXCEL関数は用意されていない。
\[
\begin{cases}
\lceil x\div d-0.5\rceil \times d &x\ge 0\\
\lfloor x\div d+0.5\rfloor \times d &x\lt 0
\end{cases}
\]
非負の数値に対して,次のEXCEL数式で五捨五超入をすることができる。
ROUND 関数を使う数式は,1000000のかわりに,十分大きい整数(十分大きいdの整数倍)に置き換えてもよい。
EXCELの数式 基準値 数値 結果 =CEILING.MATH(75.5−0.5,1) 1 75.5 75 =CEILING.MATH(75.5−5,10) 10 75.5 80 =1000000−ROUND(1000000−75.5,0) 1 75.5 75 =1000000−ROUND(1000000−75.5,−1) 10 75.5 80
負数を含む任意の数値に対して,次のEXCEL数式で五捨五超入をすることができる。
ROUNDDOWN,ROUNDUP 関数を使う数式は二段階丸めである。0.5(dの半分)ごとに切り上げてから1(d)ごとに切り捨てている。
EXCELの数式 基準値 数値 結果 =ROUNDDOWN(ROUNDUP(75.5∗2,0)/2,0) 1 75.5 75 =ROUNDDOWN(ROUNDUP(−75.5∗2,0)/2,0) 1 −75.5 −75 =ROUNDUP(75.5∗2,0)−ROUNDUP(75.5,0) 1 75.5 75 =ROUNDUP(−75.5∗2,0)−ROUNDUP(−75.5,0) 1 −75.5 −75
調剤報酬のうち,薬剤料の点数は,所定単位につき薬価を10で割った値を五捨五超入して求める。ただし,15円以下の場合は1点とする。
=MAX(1,ROUNDUP(薬価/10−0.5,0)) =MAX(1,FLOOR.MATH(CEILING.MATH(薬価/10,0.5),1))
事業主が給与から保険料を控除して支払う場合,保険料は五捨五超入される。 被保険者が保険料を現金で支払う場合,保険料は四捨五入される。 いずれも特約がある場合はこの限りでない。 \[ \text{保険料}\xrightarrow{五捨五超入}\lceil \text{保険料}-0.5\rceil,\qquad \text{保険料}\xrightarrow{四捨五入}\lfloor \text{保険料}+0.5\rfloor \]
標準報酬月額が 142,000 円,保険料率が 9.87% なら, 保険料の全額は 142,000 × 0.0987 = 14,015.4 円,折半額は 7,007.7 円になる。 被保険者の負担額は,五捨五超入のときも四捨五入のときも同じで,7,008 円になる。
標準報酬月額が 150,000 円なら, 保険料の全額は 14,805 円,折半額は 7,402.5 円になる。 被保険者の負担額は,五捨五超入のときは 7,402 円,四捨五入のときは 7,403 円になる。
標準報酬 保険料率 折半額 天引 現金 142 000 9.87 % 7 007.7 → 7 008 → 7 008 150 000 9.87 % 7 402.5 → 7 402 → 7 403
標準報酬月額の最小単位が 2,000 円,保険料率の最小単位が 0.01% ならば,保険料の全額の最小単位は 0.2 円,折半額の最小単位は 0.1 円になる。 この場合は,五捨五超入 ⌈x−0.5⌉ のかわりに五捨六入 ⌊x+0.4⌋ で計算しても結果は同じになる。
五捨五超入 =CEILING.MATH(保険料−0.5,1) 五捨六入 =FLOOR.MATH(保険料+0.4,1)
標準報酬月額の最小単位が 1,000 円,保険料率の最小単位が 0.01% ならば,保険料の全額の最小単位は 0.1 円,折半額の最小単位は 0.05 円になる。 この場合は,五捨五超入と五捨六入は異なる。ただし五捨五超入 ⌈x−0.5⌉ のかわりに50捨51入 ⌊x+0.49⌋ で計算しても結果は同じになる。
五捨五超入 =CEILING.MATH(保険料−0.5,1) 50捨51入 =FLOOR.MATH(保険料+0.49,1)
五捨六入 ⌊x+0.4⌋ はすべて五捨五超入 ⌈x−0.5⌉ の誤用である。 厄介なことには,五捨五超入であっても五捨六入とよばれることが多い。
|
|
エンジニアたちは「五捨五超入」を知らない。 彼らの常識では「五捨六入」とは ⌊x+0.4⌋ のことで, 過去のシスアド試験において五捨六入 ⌊x+0.4⌋ が出題されたことがある。
表計算ソフトを用いて経営分析を行うことにした。 分析は,1億円のけたを五捨六入し,10億円単位で行うことにした。 五捨六入する計算式として,正しいものはどれか。 このとき利用するINT関数は,小数部分を取り除いた値を返すものとし,元の値Aは1円単位で入っているものとする。
ア INT(A/100000000+0.4) イ INT(A/100000000+0.5)
ウ INT(A/1000000000+0.4) エ INT(A/1000000000+0.5)初級シスアド 平成10年春 午前問29
正解は ウ とされているが,本当の正解は INT(A/1000000000+0.4)∗1000000000 である。 需要がないもの(五捨六入のこと)を出題することも不適切であるし,誤用としてある程度広まっているものを出題することも不適切といえる。 最近は出題されていない。
次のページへ
1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め
ここでは五捨五超入 ⌈x−0.5⌉ ではなく,五捨六入 ⌊x+0.4⌋ を求める。 0.2 ごとに切り捨てた結果を四捨五入すると,小数部分が 0.6 未満のとき切り捨て,0.6 以上のとき切り上げるから,五捨六入になる。 区間 [0.0, 0.2) は 0.0≤x<0.2 を満たす実数 x の集まりである。
小数部分 | 切り捨て(0.2) | 四捨五入(1) |
[0.0, 0.2) | → 0.0 | → 0 |
[0.2, 0.4) | → 0.2 | → 0 |
[0.4, 0.6) | → 0.4 | → 0 |
[0.6, 0.8) | → 0.6 | → 1 |
[0.8, 1.0) | → 0.8 | → 1 |
非負の数値に対して,次のEXCEL数式で五捨六入をすることができる。
=ROUNDDOWN(数値+0.4,0) =MAX(0,ROUND(数値−0.1,0))
負数を含む任意の数値に対して,次のEXCEL数式で五捨六入をすることができる。
=ROUND(ROUNDDOWN(数値∗5,桁数)/5,桁数)
ここでは二捨三入・七捨八入ではない七捨八入を求める。 0.1 ごとに切り捨てた結果を 0.5 ごとに四捨五入し,さらにそれを切り捨てると,小数部分が 0.8 未満のとき切り捨て,0.8 以上のとき切り上げるから,七捨八入になる。
小数部分 | 切り捨て(0.1) | 四捨五入(0.5) | 切り捨て(1) |
[0.0, 0.1) | → 0.0 | → 0.0 | → 0 |
[0.1, 0.2) | → 0.1 | → 0.0 | → 0 |
[0.2, 0.3) | → 0.2 | → 0.0 | → 0 |
[0.3, 0.4) | → 0.3 | → 0.5 | → 0 |
[0.4, 1.5) | → 0.4 | → 0.5 | → 0 |
[0.5, 0.6) | → 0.5 | → 0.5 | → 0 |
[0.6, 0.7) | → 0.6 | → 0.5 | → 0 |
[0.7, 0.8) | → 0.7 | → 0.5 | → 0 |
[0.8, 0.9) | → 0.8 | → 1.0 | → 1 |
[0.9, 1.0) | → 0.9 | → 1.0 | → 1 |
非負の数値に対して,次のEXCEL数式で七捨八入をすることができる。
=ROUNDDOWN(数値+0.2,0) =MAX(0,ROUND(数値−0.3,0))
負数を含む任意の数値に対して,次のEXCEL数式で七捨八入をすることができる。
=ROUNDDOWN(ROUND(ROUNDDOWN(数値∗10,桁数)/5,桁数)/2,桁数)
0.2 ごとに四捨五入した結果を切り捨てると,小数部分が 0.9 未満のとき切り捨て,0.9 以上のとき切り上げるから,八捨九入になる。
小数部分 | 四捨五入(0.2) | 切り捨て(1) |
[0.0, 0.1) | → 0.0 | → 0 |
[0.1, 0.3) | → 0.2 | → 0 |
[0.3, 0.5) | → 0.4 | → 0 |
[0.5, 0.7) | → 0.6 | → 0 |
[0.7, 0.9) | → 0.8 | → 0 |
[0.9, 1.0) | → 1.0 | → 1 |
非負の数値に対して,次のEXCEL数式で八捨九入をすることができる。
=ROUNDDOWN(数値+0.1,0) =MAX(0,ROUND(数値−0.4,0))
負数を含む任意の数値に対して,次のEXCEL数式で八捨九入をすることができる。
=ROUNDDOWN(ROUND(数値∗5,桁数)/5,桁数)
丸めの幅を d として切り捨てる関数を Fd(x),切り上げる関数を Cd(x),四捨五入する関数を Rd(x) とする。 d を省略した場合は d=1 とする。 \begin{gather*} F^d(x)=\begin{cases} \lfloor x\div d\rfloor \times d &x\ge 0\\\lceil x\div d\rceil \times d &x\lt 0 \end{cases}\qquad C^d(x)=\begin{cases} \lceil x\div d\rceil \times d &x\ge 0\\\lfloor x\div d\rfloor \times d &x\lt 0 \end{cases}\\ R^d(x)=\begin{cases} \lfloor x\div d+0.5\rfloor \times d &x\ge 0\\\lceil x\div d-0.5\rceil \times d &x\lt 0 \end{cases} \end{gather*} 〇捨一入,一捨二入等の変則的な丸めは, Fd(x),Cd(x),Rd(x) を繰り返して表現できる。 Fd(x) は ROUNDDOWN,Cd(x) は ROUNDUP,Rd(x) は ROUND 関数に対応する。
丸め | 床関数 | F(x),C(x),R(x)の組合せ |
〇捨一入 | ⌊x+0.9⌋ | C(F0.1(x)) |
一捨二入 | ⌊x+0.8⌋ | C(F0.2(x)) |
二捨三入 | ⌊x+0.7⌋ | C(R0.5(F0.1(x))) |
三捨四入 | ⌊x+0.6⌋ | C(R0.5(F0.2(x))) |
四捨五入 | ⌊x+0.5⌋ | R(x) |
五捨六入 | ⌊x+0.4⌋ | R(F0.2(x)) |
六捨七入 | ⌊x+0.3⌋ | F(R0.5(R0.2(x))) |
七捨八入 | ⌊x+0.2⌋ | F(R0.5(F0.1(x))) |
八捨九入 | ⌊x+0.1⌋ | F(R0.2(x)) |
切り捨て | ⌊x⌋ | F(x) |
負数を含む任意の数値に対して,次のEXCEL数式で切り捨て,四捨五入等をすることができる。
〇捨一入 ROUNDUP(ROUNDDOWN(数値∗10,桁)/10,桁) 一捨二入 ROUNDUP(ROUNDDOWN(数値∗5,桁)/5,桁) 二捨三入 ROUNDUP(ROUND(ROUNDDOWN(数値∗10,桁)/5,桁)/2,桁) 三捨四入 ROUNDUP(ROUND(ROUNDDOWN(数値∗5,桁)∗0.4,桁)/2,桁) 四捨五入 ROUND(数値,桁) 五捨六入 ROUND(ROUNDDOWN(数値∗5,桁)/5,桁) 六捨七入 ROUNDDOWN(ROUND(ROUND(数値∗5,桁)∗0.4,桁)/2,桁) 七捨八入 ROUNDDOWN(ROUND(ROUNDDOWN(数値∗10,桁)/5,桁)/2,桁) 八捨九入 ROUNDDOWN(ROUND(数値∗5,桁)/5,桁) 切り捨て ROUNDDOWN(数値,桁)
一捨一超入,二捨二超入等の変則的な丸めは, Fd(x),Cd(x),Rd(x) を繰り返して表現できる。
丸め | 天井関数 | F(x),C(x),R(x)の組合せ |
切り上げ | ⌈x⌉ | C(x) |
一捨一超入 | ⌈x−0.1⌉ | C(F0.2(C0.1(x))) |
二捨二超入 | ⌈x−0.2⌉ | C(R0.5(C0.1(x))) |
三捨三超入 | ⌈x−0.3⌉ | C(R0.5(F0.2(C0.1(x)))) |
四捨四超入 | ⌈x−0.4⌉ | R(C0.2(x)) |
五捨五超入 | ⌈x−0.5⌉ | F(C0.5(x)) |
六捨六超入 | ⌈x−0.6⌉ | F(R0.5(C0.2(x))) |
七捨七超入 | ⌈x−0.7⌉ | F(R0.5(C0.1(x))) |
八捨八超入 | ⌈x−0.8⌉ | F(C0.2(x)) |
九捨九超入 | ⌈x−0.9⌉ | F(C0.1(x)) |
負数を含む任意の数値に対して,次のEXCEL数式で切り上げ,五捨五超入等をすることができる。
切り上げ ROUNDUP(数値,桁) 一捨一超入 ROUNDUP(ROUNDDOWN(ROUNDUP(数値∗10,桁)/2,桁)/5,桁) 二捨二超入 ROUNDUP(ROUND(ROUNDUP(数値∗10,桁)/5,桁)/2,桁) 三捨三超入 ROUNDUP(ROUND(ROUNDDOWN(ROUNDUP( 数値∗10,桁)/2,桁)∗0.4,桁)/2,桁) 四捨四超入 ROUND(ROUNDUP(数値∗5,桁)/5,桁) 五捨五超入 ROUNDDOWN(ROUNDUP(数値∗2,桁)/2,桁) 六捨六超入 ROUNDDOWN(ROUND(ROUNDUP(数値*5,桁)*0.4,桁)/2,桁) 七捨七超入 ROUNDDOWN(ROUND(ROUNDUP(数値*10,桁)/5,桁)/2,桁) 八捨八超入 ROUNDDOWN(ROUNDUP(数値∗5,桁)/5,桁) 九捨九超入 ROUNDDOWN(ROUNDUP(数値∗10,桁)/10,桁)
このような変則的な丸めは,電線の許容電流(七捨八入),ダイヤモンドのカラット(四捨五入と八捨九入)のように,極めて限定された分野を除いて使用されることはない。
変則的に見えるものも最近接丸めになっている。 たとえば,二捨三入・七捨八入は四捨五入の一種である。 また,給与から天引きする保険料(五捨六入)は五捨五超入であり, 氷点下の気温(五捨六入)は五捨五超入であり, 麻雀(五捨六入)は五捨五超入であり, 保険年齢(六捨七入)は五捨五超入の一種である。
次のページへ
1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め
フォン・ノイマン丸めは,二進法で表現された数に対して,小数部分が0でないならば小数部分を切り捨て,整数部分の最下位ビット(LSB)を1にする。 言い換えると,整数でない数を最も近い奇数に丸める。 フォン・ノイマン丸めは,偶数への「切り捨て」と偶数への「切り上げ」の平均値で求めることもできる。 区間 (0, 1) は 0<x<1 を満たす実数 x の集まりである。
十進法 | 切り捨て | 切り上げ | ノイマン |
0 | 0 | 0 | 0 |
(0, 1) | 0 | 2 | 1 |
1 | 0 | 2 | 1 |
(1, 2) | 0 | 2 | 1 |
2 | 2 | 2 | 2 |
(2, 3) | 2 | 4 | 3 |
3 | 2 | 4 | 3 |
(3, 4) | 2 | 4 | 3 |
4 | 4 | 4 | 4 |
偶数への切り捨ては ⌊x÷2⌋×2,偶数への切り上げは ⌈x÷2⌉×2,フォン・ノイマン丸めはそれらの平均値になる。 \[ \frac{\lfloor x\div 2\rfloor \times 2+\lceil x\div 2\rceil \times 2}{2}=\lfloor x\div 2\rfloor+\lceil x\div 2\rceil \]
負数を含む任意の数値に対して,次のEXCEL数式でフォン・ノイマン丸めをすることができる。
=AVERAGE(FLOOR.MATH(数値,2),CEILING.MATH(数値,2)) =ROUNDDOWN(数値/2,0)+ROUNDUP(数値/2,0)
最後のページです
2012.12.24 作成 / 2020.4.22 更新
Home › エクセル関数による丸め処理