【Java】 数値 に関するあれこれ

データ型

プリミティブ

byte、short、int、long、float、double

注意

 * 数値リテラルの整数の値はint型の値として扱われるので、
   long型の数値として扱うには、以下のようにする

 long = 30L;

 * 数値リテラル浮動小数点数の値はdouble型の値として扱われるので、
   float型の数値として扱うには、以下のようにする

 float = 1.223F;
http://www.javadrive.jp/start/var/index4.html

数値クラス

* null も入力可能
Byte、Short、Integer、Long、Float、Double
BigInteger、BigDecimal(主に、お金等に使う)
http://www.atmarkit.co.jp/ait/articles/0702/27/news100.html

BigDecimalの四則演算

 * メソッド を使う

 足し算 : add()
 引き算 : subtract()
 掛け算 : multiply()
 割り算 : divide()
http://www.saka-en.com/java/java-bigdecimal/

★注意★ BigDecimalの比較について

 * BigDecimal 型の性質上、0 と 0.00 は別のもの

【ダメな例】(equals()で比較する)
BigDecimal value1 = new BigDecimal("0");
BigDecimal value2 = new BigDecimal("0.00");

if (value1.equals(value2)) {
    System.out.println("OK");
} else {
    System.out.println("Bad..."); // こっちが表示
}

【OKな例】(compareTo()で比較する)
BigDecimal value1 = new BigDecimal("0");
BigDecimal value2 = new BigDecimal("0.00");

if (value1.compareTo(value2) == 0) {
    System.out.println("OK"); // こっちが表示
} else {
    System.out.println("Bad...");
}

関連記事

 * 以下の関連記事のおまけのサンプルに BigDecimal を記載。
http://blogs.yahoo.co.jp/dk521123/34536896.html

Atomicクラス(非同期)

AtomicInteger、AtomicIntegerArray
AtomicLong、AtomicLongArray

 * 非同期に関しては、以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/33626978.html

フォーマット

 * NumberFormat  : 既定フォーマットの場合
 * DecimalFormat : 独自にフォーマット形式を作成したい場合

参考文献

http://java-reference.sakuraweb.com/java_number_format.html
http://syunpon.com/programing/java/sample/numberformat.shtml

アンダースコア付き数値(From Java7)

 *下線文字を使用して 分離できる(コードの可読性を向上のため)

サンプル

int ex1 = 123_456_789;

参考文献

http://docs.oracle.com/javase/jp/7/technotes/guides/language/underscores-literals.html