Float 組込みオブジェクト

この章では組込み変数領域が初めから備えている Float 組込みオブジェクトを定義する。

Float オブジェクトは、スクリプトで扱われる実数を表すオブジェクトである。

Float のメンバ

prototype
Real.prototype を準プロトタイプとするオブジェクト。
name
文字列オブジェクト "Float"
zero
実数 0 を表す Float オブジェクト。 このオブジェクトの値の絶対精度は無限大である。
one
実数 1 を表す Float オブジェクト。 このオブジェクトの値の絶対精度は無限大である。

Float の内部メンバ

$prototype
Type.prototype

Float の関数としての呼出し

Float は関数として呼出し可能である。一つのオブジェクト a を引数として関数として呼出されると次の処理を実行する:

  1. aFloat オブジェクトならば、[[a]] を返す。
  2. aInteger オブジェクトならば、aFloat拡大変換し、その結果を値とする正常終了の結果を返す。
  3. aRational オブジェクトならば、aFloat拡大変換し、その結果を値とする正常終了の結果を返す。
  4. a文字列オブジェクトならば、その文字列オブジェクトの内容を数値として解釈し、その値を表す Float オブジェクトを r として、[[r]] を返す。文字列が数値として解釈できない場合は、新しい ArgumentError のインスタンスを投げる。文字列の解釈の方法は実行環境に任せる
  5. 渡された引数が上のどの条件にも当てはまらない場合の動作は規定しない。

呼出しにおける引数の個数が一つでない場合の動作は規定しない。

Float オブジェクトのプロパティ

Float オブジェクトは以下のプロパティを持つ。ただし、初期の Float.prototype やその準プロトタイプのプロパティが スクリプトの実行によって変更された場合は、この限りではない。

absPrec
これは読み取り専用プロパティであり、その値はこの Float オブジェクトの絶対精度を表す Float オブジェクト (精度が有限の場合) または正の無限大を表す Infinity オブジェクト (精度が無限大の場合) である。このプロパティの値が Float オブジェクトならば、その精度はこの Float オブジェクトの absolutePrecision 内部メンバの値の精度 (実行環境が扱う原始制限実数型の値の精度) とする。
relPrec
これは読み取り専用プロパティであり、その値はこの Float オブジェクトの相対精度を表す Float オブジェクト (精度が有限の場合) または正の無限大を表す Infinity オブジェクト (精度が無限大の場合) または NaN オブジェクト (精度が未定義の場合) である。このプロパティの値が Float オブジェクトならば、その精度は実行環境が定める。
実行環境は、例えば次のようにして このプロパティを実装できる:
Float.prototype.$get$relPrec = @{
    @return (@this == 0)
        ? @nan
        : @this.absPrec + Math.log10[Math.abs[@this]];
}
setAbsPrec メソッド
1-ary メソッド。Float オブジェクトを @this 値として関数として呼出すと、次の動作を行う:
  1. 渡された引数の個数が一つでなければ、新しい NumberOfArgumentsError のインスタンスを投げる。
  2. 引数が Real オブジェクトならば、 [[@this 値の Float オブジェクトと同じ値を表し、絶対精度がその Real オブジェクトが表す値であるような Float オブジェクト]] を返す。
  3. 引数が正の無限大を表す Infinity オブジェクトならば、[[@this 値の Float オブジェクトと同じ値を表し、絶対精度が無限大の Float オブジェクト]] を返す。
  4. 上記以外の引数ならば、新しい ArgumentError のインスタンスを投げる。
関数呼出しにおける @this 値が Float オブジェクトでない場合の動作は規定しない。
setRelPrec メソッド
1-ary メソッド。Float オブジェクトを @this 値として関数として呼出すと、次の動作を行う:
  1. 渡された引数の個数が一つでなければ、新しい NumberOfArgumentsError のインスタンスを投げる。
  2. @this 値の Float オブジェクトが表す値が 0 ならば、新しい UnsupportedOperationError のインスタンスを投げる。
  3. 引数が Real オブジェクトならば、 [[@this 値の Float オブジェクトと同じ値を表し、相対精度がその Real オブジェクトが表す値であるような Float オブジェクト]] を返す。
  4. 引数が正の無限大を表す Infinity オブジェクトならば、[[@this 値の Float オブジェクトと同じ値を表し、相対精度が無限大の Float オブジェクト]] を返す。
  5. 上記以外の引数ならば、新しい ArgumentError のインスタンスを投げる。
関数呼出しにおける @this 値が Float オブジェクトでない場合の動作は規定しない。
toString メソッド
0-ary メソッド。Float オブジェクトを @this 値としてこのメソッドを呼出すと、渡された @this 値を文字列オブジェクトに変換したものを結果として返す。 文字列への変換の方法は実行環境に任せる。
© 2006-2007 Magicant