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の絶対値についてまとめてみた。
様々な場面で登場する関数なので、ぜひ覚えてしまおう。

 
                    


