📏

[Java] 色々な端数処理方式

2021/04/11に公開

端数処理は?

Wikipediaの定義はこれです

端数処理(はすうしょり)とは、与えられた数値を、ある一定の丸め幅の整数倍の数値に置き換えることである。平たく、丸め(まるめ)ともいう。常用的には、十進法で10となる数値の累乗(…100、10、1、0.1、0.01…)が丸め幅とされることが多いが、十進法以外のN進法についても同様である。


端数処理に関する関数や方法[1]

端数処理のために存在するもの

Math.ceil(double n) 関数 double返す

機能: 小数部分を切り上げる。

規則: 正数であれば小数部分を捨てる後1を足す負数であれば小数部分を捨てるだけ

Javaの元実装代文:


Math.floor(double n)関数 double返す

機能: 小数部分を切り捨てる。

規則: 正数であれば小数部分を捨てるだけ負数であれば小数部分を捨てる後1を引く


Math.rint(double n)関数 double返す

機能: 最も近いの整数をdoubleで返す。

規則:

  • 整数であればdouble(n)[2]を返す
  • 小数であれば
    • 小数部分は0.5ではない: 0.5より小さいは切り捨て, さもないと切り上げ
    • 小数部分は0.5であれば: 最も近いの偶数をdouble型で返す


Math.round(deci n)[3]関数 intまだはlong返す

機能: 最も近いの整数をintまだはlong型で返す。

規則: Math.floor(n + 0.5)を返す。nfloat型の時はintndouble型の時はlongを返す。

Javaの元実装代文:


端数処理機能があるもの

BigDecimal.divide(BigDecimal n, int scale, RoundingMode mode)類関数方法[4] BigDecimal返す

脚注
  1. 関数: 英 function, static methodの意味です。方法(メソッド): 英 method ↩︎

  2. (double) nの意味です。可読性を向上するために,double(n)として表記する。 ↩︎

  3. decifloatdouble型がどっちでもOKの意味です。 ↩︎

  4. 呼び出し元の値を変更しない。代わりに,計算結果を戻り値として返す。 ↩︎

Discussion