Javaで絶対値を計算したい、ということはときどきある。
数値計算系のプログラムはもちろんのこと、ただ「値と値の差」だけを知りたいときなど、絶対値は登場してくる。
このページではJavaで絶対値を計算する方法をお伝えする。
目次
Javaの絶対値の求め方
絶対値とは、0からの距離だ。例えば、「3」も「-3」も0からの距離は「3」になる。これを絶対値という。
Javaで絶対値を求めるためにはMathクラスのabsメソッドを利用する。書き方の基本は簡単だ。
絶対値の値 = Math.abs(対象となる数)
下記で、Javaでの絶対値を求める書き方の詳細を確認していこう。
メソッドの型による違い
abs関数の引数に指定した値の絶対値を求めるが、引数に指定できる値はdouble型・float型・int型・long型と種類がある。
double型
abs(double a)
戻り値の型 |
public static double |
内容 |
double値の絶対値を戻す。もし、引数が負でないなら、引数が戻される。もし、引数が負ならば、正負を逆にした引数が戻される。 ■下記は特例となる
言い換えれば、結果は、 式:Double.longBitsToDouble ((Double.doubleToLongBits(a)<<1)>>>1)の値と同じである。 引数:a - 絶対値が決定されるべき引数 戻り値:引数の絶対値 |
float型
abs(float a)
戻り値の型 |
public static float |
内容 |
float値の絶対値を戻す。 ■下記は特例となる
ただし、特例にある式は以下のようになる。 式:Float.intBitsToFloat(0x7fffffff & Float.floatToIntBits(a)) 後はdouble型と同じだ。 |
int型
abs(int a)
戻り値の型 |
public static int |
内容 |
int値の絶対値を戻す。もし、引数が負でないなら、引数が戻される。もし、引数が負ならば、正負を逆にした引数が戻される。 注記:もし、引数がInteger.MAX_VALUE、負で表現できる最小のlong値ならば、結果は同じ負の値になる。 引数:a - 絶対値が決定されるべき引数 戻り値:引数の絶対値 |
long型
abs(long a)
戻り値の型 |
public static long |
内容 |
long値の絶対値を戻す。 後はint型と同じだ。ただし、注記はLong.MIN_VALUEとなる。 |
Javaで絶対値を求めるサンプルプログラム
それでは実際にサンプルプログラムを確認してみよう。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class AbsDouble { public static void main(String[] args) { double positiveInfinity = Double.POSITIVE_INFINITY;//[1] double positiveValue = 12.34;//[2] double positiveZero = 0.0;//[3] double negativeZero = - 0.0;//[4] double negativeValue = -12.34;//[5] double negativeInfinity = Double.NEGATIVE_INFINITY;//[6] double nanValue = Double.NaN;//[7] System.out.println("[8] 正の無限大 : " + positiveInfinity + "-> "+ Math.abs(positiveInfinity)); System.out.println("[9] 正の値 : " + positiveValue + "-> "+ Math.abs(positiveValue)); System.out.println("[10] 正のゼロ : " + positiveZero + "-> "+ Math.abs(positiveZero)); System.out.println("[11] 負のゼロ : " + negativeZero + "-> " + Math.abs(negativeZero)); System.out.println("[12] 負の値 : " + negativeValue + "-> " + Math.abs(negativeValue)); System.out.println("[13] 負の無限大 : " + negativeInfinity + "-> " + Math.abs(negativeInfinity)); System.out.println("[14] NaN(数値でない値) : " + nanValue + "-> " + Math.abs(nanValue)); } } |
実行結果
1 2 3 4 5 6 7 |
[8] 正の無限大 : Infinity -> Infinity [9] 正の値 : 12.34 -> 12.34 [10] 正のゼロ : 0.0 -> 0.0 [11] 負のゼロ : -0.0 -> 0.0 [12] 負の値 : -12.34 -> 12.34 [13] 負の無限大 : -Infinity -> Infinity [14] NaN(数値でない値) : NaN -> NaN |
サンプルプログラムの説明
それでは簡単にプログラムの解説をする。
設定側
- [1] 正の無限大を変数:positiveInfinityに設定する
- [2] 正の値を変数:positiveValueに設定する
- [3] 正のゼロを変数:positiveZeroに設定する
- [4] 負のゼロを変数:negativeZeroに設定する
- [5] 負の値を変数:negativeValueに設定する
- [6] 負の無限大を変数:negativeInfinityに設定する
- [7] NaNを変数:nanValueに設定する
表示側
- [8] positiveInfinityの値と絶対値を表示する
- [9] positiveValueの値と絶対値を表示する
- [10] negativeZeroの値と絶対値を表示する
- [11] positiveInfinitの値と絶対値を表示する
- [12] negativeValueの値と絶対値を表示する
- [13] negativeInfinityの値と絶対値を表示する
- [14] nanValueの値と絶対値を表示する
まとめ
このページではJavaの絶対値についてまとめてみた。
様々な場面で登場する関数なので、ぜひ覚えてしまおう。