第5章 数字
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
5.0 はじめに
数値はあらゆる計算の基本である。配列の添字、温度、給料、格付け、その他無限のものに使われている。しかし、見た目ほど単純ではない。浮動小数点数の場合、どの程度正確なのか?乱数の場合、ランダムとはどの程度ランダムなのか。数値を含むはずの文字列では、何が実際に数値を構成するのか?
Javaには、8つの組み込み型(プリミティブ型) があり、そのうち7つは数値を表すのに使用できる。表5-1に、これらのプリミティブ型とそのラッパー(オブジェクト)型 、およびプリミティブ型を表さない2つの数値クラスを示す。8番目のプリミティブであるboolean とそのラッパーBoolean は数値ではないので、そのように扱うことはできない。CやPerlのように、数値型のサイズや精度を指定しない言語 とは異なり、移植性を目標とするJavaは、これらを正確に指定し、すべてのプラットフォームで同じであるとしていることに注意されたい。
| 内蔵タイプ | オブジェクト・ラッパー | 内蔵サイズ(ビット) | 内容 |
|---|---|---|---|
|
|
8 |
符号付き整数 |
|
|
16 |
符号付き整数 |
|
|
32 |
符号付き整数 |
|
|
64 |
符号付き整数 |
|
|
32 |
IEEE-754浮動小数点(単精度) |
|
|
64 |
IEEE-754浮動小数点(倍精度) |
|
|
16 |
符号なしユニコード文字 |
該当なし |
|
無制限 |
任意のサイズの不変整数値 |
該当なし |
|
無制限 |
任意サイズ・精度の不変浮動小数点値 |
おわかりのように、Javaにはあらゆる目的に対応する数値型が用意されている。符号付き整数には4つのサイズがあり、 さまざまな大きさの整数を表すことができる。浮動小数点数には、実数を近似するための2つのサイズがある。また、Unicode文字を表現し、演算するために特別に設計された型もある。 ここでは、プリミティブな数値型について説明する。Big 数値型についてはレシピ5.13で説明する。
ユーザ入力やテキストファイルから数値を表す文字列を読み込む場合、それを適切な型に変換する必要がある。第2列のオブジェクト・ラッパークラス はいくつかの関数を持っているが、そのうちの1つは、この基本的な変換機能を提供するもので、Cプログラマが使う関数atoi/atof ファミリーと、scanf の数値引数の代わりとなるものである。
逆に、文字列連結を使ったり、各ラッパークラス のstatic メソッドtoString(value) を使ったりするだけで、任意の数値を文字列 に変換することができる。 完全に制御したい場合は、レシピ5.5で、NumberFormat とその関連クラスを使って、書式を完全に制御する方法を示している。
オブジェクト・ラッパーという名前が示すように、標準APIの多くの部分がオブジェクトで定義されているため、これらのクラスはJavaオブジェクトで数値をラップするためにも使われる。この後の"Solution "では、Integer オブジェクトを使って、int'の値をオブジェクト・シリアライゼーションを使ってファイルに保存し、後でその値を取り出すことを示している。 ...