akios @ ウィキ

3.10.2. 浮動小数点リテラル

最終更新:

akios

- view
管理者のみ編集可

3. 字句構造

3.1. Unicode

3.2. 字句変換

3.3. Unicodeエスケープ

3.4. 行終端子

3.5. 入力要素とトークン

3.6. 空白

3.7. コメント

3.8. 識別子

3.9. キーワード

3.10. リテラル

3.10.1. 整数リテラル

3.10.2. 浮動小数点リテラル

浮動小数点リテラル(floating-point literal)は整数部、10進もしくは16進小数点(ASCIIピリオド文字)、小数部、指数部、型を表す接尾語より構成されています。

浮動小数点リテラルは10進もしくは16進で表すことができます。

10進浮動小数点リテラルでは、少なくとも1桁の数(整数部もしくは小数部に)の他に10進小数点、指数部、型を表す接尾語のいずれか1つが必要です。それ以外の要素は省略可能です。指数部が存在するなら、ASCII文字eまたはEが先頭に付いた符号付き整数で表します。

16進数浮動小数点リテラルでは、少なくとも1桁の数(整数部もしくは小数部に)の他に指数部が必須です。型を表す接尾語は省略可能です。指数部はASCII文字pまたはPが先頭に付いた符号付き整数で表します。

アンダースコアを整数部や小数部や指数部の数字を区切るのに使用できます。

FloatingPointLiteral:
  DecimalFloatingPointLiteral
  HexadecimalFloatingPointLiteral

DecimalFloatingPointLiteral:
  Digits . Digitsopt ExponentPartopt FloatTypeSuffixopt
  . Digits ExponentPartopt FloatTypeSuffixopt
  Digits ExponentPart FloatTypeSuffixopt
  Digits ExponentPartopt FloatTypeSuffix

ExponentPart:
  ExponentIndicator SignedInteger

ExponentIndicator: one of
  e E

SignedInteger:
  Signopt Digits

Sign: one of
  + -

FloatTypeSuffix: one of
  f F d D

HexadecimalFloatingPointLiteral:
  HexSignificand BinaryExponent FloatTypeSuffixopt

HexSignificand:
  HexNumeral
  HexNumeral .
  0 x HexDigitsopt . HexDigits
  0 X HexDigitsopt . HexDigits

BinaryExponent:
  BinaryExponentIndicator SignedInteger

BinaryExponentIndicator:one of
  p P

浮動小数点リテラルはASCII文字Ffが末尾に付く場合はfloat型となります。ASCII文字Ddが付くもしくはなにも付かない場合はDouble型になります。

float型、double型が表す値はそれぞれIEEE754の32ビット単精度浮動小数点、64ビット倍精度浮動小数点を表します。

浮動小数点数のUnicode文字列表現からIEEE754の2進浮動小数点の内部表現に適切に変換する処理の詳細はパッケージjava.langFloatクラスやDoubleクラスのメソッドvalueOfを参照してください。

float型の最大の正の有限のリテラルは3.4028235e38fです。

float型の最小の正の有限の非ゼロのリテラルは1.40e-45fです。

double型の最大の正の有限のリテラルは1.7976931348623157e308です。

double型の最小の正の有限の非ゼロのリテラルは4.9e-324です。

非ゼロの浮動小数点リテラルが大きすぎる場合、丸め変換により内部表現がIEEE754無限大となるためコンパイルエラーとなります。

プログラムでコンパイルエラーを出さずに無限大を扱うには定型式である1f/0f-1d/0dを用いるか、FloatクラスやDoubleクラスの組込み定数POSITIVE_INFINITYNEGATIVE_INIFINITYを使用します。

非ゼロの浮動小数点リテラルが小さすぎる場合、丸め変換により内部表現がゼロとなるためコンパイルエラーとなります。

非ゼロの浮動小数点リテラルが小さい値の場合でも丸め変換により内部表現が非ゼロの非正規化数となる場合はコンパイルエラーとはなりません。

非数値(Not-a-Number value)を表すにはFloatクラスやDoubleクラスの組込み定数Float.NaNDouble.NaNを使用します。

float型リテラルの例:
1e1f  2.f  .3f  0f  3.14f  6.022137e+23f

double型リテラルの例:
1e1  2.  .3  0.0  3.14  1e-9d  1e137

3.10.3. ブールリテラル

3.10.4. 文字リテラル

3.10.5. 文字列リテラル

3.10.6. 文字・文字列リテラル用のエスケープシーケンス

3.10.7. ヌルリテラル

3.11. 分離子

3.12. 演算子

目安箱バナー