Excelの表示形式で整数の表示にすると小数第1位の四捨五入となります。TEXT関数を使った場合も同じです。しかし、端数の処理は四捨五入とは限りません。切り上げ、切り捨て、五捨五超入、銀行丸めなどの方法があります。それぞれ、Excelの関数が必ず用意されているというわけではありませんので、小数を足したり引いたりしてずらすか、関数を組み合わせることによって端数処理をします。また、マイナスの数を扱う場合はその端数処理の考え方が複雑なので注意しなければなりません。
そこで、今回は、小数部分をなくして整数値にする計算方法をまとめて解説します。
目次
1.基本形(四捨五入、切り上げ、切り捨て)
(1)小数第1位を四捨五入
問題
ROUND関数またはINT関数を用いて、A列の数値の小数第1位を四捨五入して整数値にしなさい。
解説
四捨五入はROUND関数を使います(参考:【Excel】ROUND関数と表示形式の違い、数式の検証で計算が合わない原因を見つける練習)。ROUND系の関数を使う方法のほかにINT関数を使う方法があり、プラスの数の場合は結果は同じですがマイナスの場合が異なります。
- 四捨五入(マイナスの場合も四捨五入)
=ROUND(数値,0) - 四捨五入(マイナスの場合だけ五捨五超入)
=INT(数値+0.5)
INT関数を使う場合は0.5を足してから切り捨てますが、マイナスで小数部分がちょうど0.5の場合、切り捨てになります。
(2)小数第1位を切り捨て
問題
ROUNDDOWN関数またはINT関数を用いて、A列の数値の小数第1位を切り捨てて整数値にしなさい。
解説
切り捨ては、ROUNDDOWN関数またはINT関数を使います。
切り捨てをするときに、マイナスの場合はどうするかという問題があり、元の数値を超えない最大整数を採用する方法、0に近いほうを採用する方法の2通りがあります。
- 切り捨て(ただし、マイナスの場合は元の数値を超えない最大整数)
INT(数値) - 切り捨て(ただし、マイナスの場合は0に近いほう)
ROUNDDOWN(数値,0) または TRUNC(数値)
例えば、-2.5の場合、INT関数は元の数(-2.5)以下の整数になるので-3となりますが、ROUNDDOWN(TRUNC)の場合は0に近いほうを採用するので-2となります。
(3)小数第1位を切り上げ
問題
ROUNDUP関数またはINT関数を用いて、A列の数値の小数第1位を切り上げて整数値にしなさい。
解説
通常、切り上げはROUNDUP関数を使います。
切り上げをするときに、マイナスの場合はどうするかという問題があり、0に遠いほうを採用する方法、元の数値以上の最小整数を採用する方法の2通りがあります。
- 切り上げ(ただし、マイナスの場合は0から遠いほう)
=ROUNDUP(数値,0) - 切り上げ(ただし、マイナスの場合は元の数値以上の最小整数)
=-INT(-数値)
ROUNDUP関数とINT関数では、マイナスの場合の結果が異なります。例えば、-2.5の場合、ROUNDUP関数は0から遠いほうを採用するので-3となりますが、INTの場合は元の数(-2.5)以上の整数になるので-2となります。
2.四捨五入の変則系(五捨六入など)
(1)プラスだけの場合
〇捨一入~八捨九入の場合は、+0.4~-0.4だけずらして四捨五入をします。ただし、マイナスの場合は絶対値を考える必要があります(後述)。
- 〇捨一入・・・0は切り捨て、1以上は切り上げ
=ROUND(数値+0.4,0)
=INT(数値+0.9) - 一捨二入・・・1以下は切り捨て、2以上は切り上げ
=ROUND(数値+0.3,0)
=INT(数値+0.8) - 二捨三入・・・2以下は切り捨て、3以上は切り上げ
=ROUND(数値+0.2,0)
=INT(数値+0.7) - 三捨四入・・・3以下は切り捨て、4以上は切り上げ
=ROUND(数値+0.1,0)
=INT(数値+0.6) - 四捨五入・・・4以下は切り捨て、5以上は切り上げ
=ROUND(数値,0)
=INT(数値+0.5) - 五捨六入・・・5以下は切り捨て、6以上は切り上げ
=ROUND(数値-0.1,0)
=INT(数値+0.4) - 六捨七入・・・6以下は切り捨て、7以上は切り上げ
=ROUND(数値-0.2,0)
=INT(数値+0.3) - 七捨八入・・・7以下は切り捨て、8以上は切り上げ
=ROUND(数値-0.3,0)
=INT(数値+0.2) - 八捨九入・・・8以下は切り捨て、9以上は切り上げ
=ROUND(数値-0.4,0)
=INT(数値+0.1)
(2)マイナスの数も考える場合
- 〇捨一入・・・0は切り捨て、1以上は切り上げ
=ROUND(ABS(数値)+0.4,0)*SIGN(数値) - 一捨二入・・・1は切り捨て、2以上は切り上げ
=ROUND(ABS(数値)+0.3,0)*SIGN(数値) - 二捨三入・・・2は切り捨て、3以上は切り上げ
=ROUND(ABS(数値)+0.2,0)*SIGN(数値) - 三捨四入・・・3は切り捨て、4以上は切り上げ
=ROUND(ABS(数値)+0.1,0)*SIGN(数値) - 四捨五入・・・4は切り捨て、5以上は切り上げ
=ROUND(数値,0) - 五捨六入・・・5は切り捨て、6以上は切り上げ
=ROUND(ABS(数値)-0.1,0)*SIGN(数値) - 六捨七入・・・6は切り捨て、7以上は切り上げ
=ROUND(ABS(数値)-0.2,0)*SIGN(数値) - 七捨八入・・・7は切り捨て、8以上は切り上げ
=ROUND(ABS(数値)-0.3,0)*SIGN(数値) - 八捨九入・・・8は切り捨て、9以上は切り上げ
=ROUND(ABS(数値)-0.4,0)*SIGN(数値)
3.五捨五超入
問題
A列の数値の小数第1位を五捨五超入にして整数値にしなさい。
解説
四捨五入に似たものとして「五捨五超入」があります。
原則として四捨五入にしますが、例外として小数部分がちょうど0.5の場合だけ切り捨てにすることをといいます。例えば、10.51の場合は切り上げで11となりますが、10.5の場合は切り捨てで10となります(「.5」の後に何もない場合は切り捨て)。
- 4以下・・・切り捨て
- 端数がちょうど0.5・・・切り捨て
- 端数が0.5より大・・・切り上げ
元の数値から0.5を引いて切り上げますが、ROUNDUP関数を用いると0以上0.5未満の数値がマイナスになるため、CEILING関数を使います。
- 五捨五超入・・・0.5以下は切り捨て、0.5超は切り上げ
=CEILING(数値-0.5,1)
(例外)下限を設定する場合
病院、診療所、調剤薬局の調剤報酬は、薬剤料と技術料をそれぞれ点数で計算することになっています(保険で3割負担の場合は1点あたり3円支払う)。このうち薬剤料の点数は、薬の値段を10で割って五捨五超入します。10で割って0.5円を引いて切り上げをします。
- 点数=(薬価/10-0.5)の切り上げ
ただし、薬剤料は最低1点以上にしなければならないことになっています。下限はMAX関数を使います(参考:【Excel関数】最大なのに下限のMAX、最小なのに上限のMIN)。
- 10で割って五捨五超入(ただし1点以上)
=MAX(ROUNDUP(薬価/10-0.5,0),1)
なお、下限を1点にしているので、この場合はROUNDUPを使っても問題ありません。
4.銀行丸め・JIS丸め
問題
A列の数値の小数第1位を銀行丸めにして整数値にしなさい。
解説
五捨五超入よりさらにややこしいのが銀行丸めです。偶数丸め、最近接丸め、JIS丸め、ISO丸め、などということもあります。原則として四捨五入をしますが、例外として小数部分がちょうど0.5の場合に切り捨てと切り上げのうち結果が偶数となるほうを選びます。例えば、10.5の場合は切り捨てで10(偶数)、11.5の場合は切り上げで12(偶数)となります。答えが偶数になるように切り捨てか切り上げかを判断します。
- 4以下・・・切り捨て
- 端数がちょうど0.5・・・偶数になるように切り捨てor切り上げ
- 端数が0.5より大・・・切り上げ
偶数になるように切り捨てるにはFLOOR(数値,2)、偶数になるように切り上げるにはCEILING(数値,2)ですが、これらの平均をとることによって銀行丸めをすることができます。
- =CEILING(数値-0.5,2)/2+FLOOR(数値+0.5,2)/2
(補足)小数第3位を丸める場合
- =CEILING(数値-0.005,0.02)/2+FLOOR(数値+0.005,0.02)/2
解説は以上です。