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

1. 切り捨て

1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め

ROUNDDOWN(数値,桁数)

数値=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)1001200
=ROUNDDOWN(1234.56,0)11234
=ROUNDDOWN(1234.56,1)0.11234.5
=ROUNDDOWN(−1234.56,0)1−1234

FLOOR.MATH(数値,基準値,モード)

数値=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)1001200
=FLOOR.MATH(1234.56,1)11234
=FLOOR.MATH(1234.56,0.1)0.11234.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)))11000
=ROUNDDOWN(1234.56,3−1−INT(LOG(1234.56)))31230
=ROUNDDOWN(1234.56,5−1−INT(LOG(1234.56)))51234.5

次のページへ

1 2 3 4 5 6 7 Next

2. 切り上げ

1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め

ROUNDUP(数値,桁数)

数値=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)1001300
=ROUNDUP(1234.56,0)11235
=ROUNDUP(1234.56,1)0.11234.6
=ROUNDUP(−1234.56,0)1−1235

CEILING.MATH(数値,基準値,モード)

数値=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)1001300
=CEILING.MATH(1234.56,1)11235
=CEILING.MATH(1234.56,0.1)0.11234.6
=CEILING.MATH(−1234.56,1)1−1234
=CEILING.MATH(−1234.56,1,1)1−1235

EVEN(数値)

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) がうまく定義できない。

EVEN 関数結果
EVEN(3.0)4
EVEN(2.5)4
EVEN(2.0)2
EVEN(1.5)2
EVEN(1.0)2
EVEN(0.5)2
EVEN(0.0)0
EVEN(−0.5)−2
EVEN(−1.0)−2
EVEN(−1.5)−2
EVEN(−2.0)−2
EVEN(−2.5)−4
EVEN(−3.0)−4
ODD 関数結果
ODD(3.0)3
ODD(2.5)3
ODD(2.0)3
ODD(1.5)3
ODD(1.0)1
ODD(0.5)1
ODD(0.0)1
ODD(−0.5)−1
ODD(−1.0)−1
ODD(−1.5)−3
ODD(−2.0)−3
ODD(−2.5)−3
ODD(−3.0)−3

有効桁を指定して切り上げ

最上位の桁は 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)))12000
=ROUNDUP(1234.56,3−1−INT(LOG(1234.56)))31240
=ROUNDUP(1234.56,5−1−INT(LOG(1234.56)))51234.6

次のページへ

1 2 3 4 5 6 7 Next

3. 四捨五入

1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め

ROUND(数値,桁数)

数値=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)1001200
=ROUND(1234.56,0)11235
=ROUND(1234.56,1)0.11234.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)))11000
=ROUND(1234.56,3−1−INT(LOG(1234.56)))31230
=ROUND(1234.56,5−1−INT(LOG(1234.56)))51234.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.52
=INT(0.5+0.5)0.51
=INT(−0.5+0.5)−0.50
=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 5 6 7 Next

4. FLOOR,CEILING,MROUND

1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め

FLOOR,CEILING,MROUND

これらの関数は,数値と基準値の符号が異なると #NUM! エラーになり,使い勝手が悪い。

FLOOR(数値,基準値)

数値=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)1138
=FLOOR(−38.2,−5)−55−35

CEILING(数値,基準値)

同様に 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)1139
=CEILING(−38.2,−5)−55−40

MROUND(数値,基準値)

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)1138
=MROUND(−38.2,−5)−55−40

次のページへ

1 2 3 4 5 6 7 Next

5. 五捨五超入

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)175.575
=CEILING.MATH(75.5−5,10)1075.580
=1000000−ROUND(1000000−75.5,0)175.575
=1000000−ROUND(1000000−75.5,−1)1075.580

負数を含む任意の数値に対して,次のEXCEL数式で五捨五超入をすることができる。
ROUNDDOWN,ROUNDUP 関数を使う数式は二段階丸めである。0.5(dの半分)ごとに切り上げてから1(d)ごとに切り捨てている。

EXCELの数式基準値数値結果
=ROUNDDOWN(ROUNDUP(75.5∗2,0)/2,0)175.575
=ROUNDDOWN(ROUNDUP(−75.5∗2,0)/2,0)1−75.5−75
=ROUNDUP(75.5∗2,0)−ROUNDUP(75.5,0)175.575
=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 0009.87 %7 007.7→ 7 008→ 7 008
150 0009.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.5⌋→ 四捨五入
⌈x−0.5⌉→ 四捨五入じゃないほう
⌊x+0.4⌋→ 五捨六入
名称エンジニアの知識現実
四捨五入→ ⌊x+0.5⌋= ⌊x+0.5⌋
五捨五超入→ 知らない≠ ⌈x−0.5⌉
五捨六入→ ⌊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 5 6 7 Next

6. 七捨八入,八捨九入

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 5 6 7 Next

7. フォン・ノイマン丸め

1. 切り捨て
2. 切り上げ
3. 四捨五入
4. FLOOR,CEILING,MROUND
5. 五捨五超入
6. 七捨八入,八捨九入
7. フォン・ノイマン丸め

フォン・ノイマン丸め

フォン・ノイマン丸めは,二進法で表現された数に対して,小数部分が0でないならば小数部分を切り捨て,整数部分の最下位ビット(LSB)を1にする。 言い換えると,整数でない数を最も近い奇数に丸める。 フォン・ノイマン丸めは,偶数への「切り捨て」と偶数への「切り上げ」の平均値で求めることもできる。 区間 (0, 1) は 0<x<1 を満たす実数 x の集まりである。

十進法切り捨て切り上げノイマン
0000
(0, 1)021
1021
(1, 2)021
2222
(2, 3)243
3243
(3, 4)243
4444

偶数への切り捨ては ⌊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)

最後のページです

1 2 3 4 5 6 7 Home

エクセル関数による丸め

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

2012.12.24 作成 / 2020.4.22 更新

Home › エクセル関数による丸め処理