Lisp Scheme Part17at TECH
Lisp Scheme Part17 - 暇つぶし2ch898:デフォルトの名無しさん
07/08/02 01:55:36
>>894
C言語で浮動小数点定数を
float f1 = 3.14f;
double f2 = 3.14;
とすると,バイナリで見たときf1とf2には別のデータが入るよね?
人間は浮動小数点定数のバイナリ表現を書くのが面倒だから "3.14" 等とだけ書いてコンパイラに変換させているわけだが
このときコンパイラに「IEEE single相当(仮数が23+1桁)の範囲で最良の3.14の近似を使ってくれ」 or
「IEEE double相当(仮数が52+1桁)の範囲で最良の3.14の近似を使ってくれ」と区別した指示を与えてることになる.
この一般化で,"3.14 | 10" は「ここの定数には,仮数が10桁の範囲で最良の3.14の近似を使ってくれ」と要求していることになる.
これは当然IEEE singleよりは桁が多いし,またIEEE doubleよりは桁が小さいので
普通に3.14と書いてデフォルトの52+1桁(以上)の数に変換させたときとは違う演算結果を得るだろうね.

Mathematicaやbc(1)のように浮動小数点数データの内部に「有効桁」という属性が含まれるようになる,という意味ではないよ.
ソースコード内の "3.14" などという文字列から処理系内部の数表現への,対応付けの厳密化だね.
指数表記にe, s, f, d, lの区別ができたり,ずいぶん細かくなったものだ.

>>896
R5.97RS 4.2.8 Numbers


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch