Pascal 日和 ホームページの「Object Pascal入門-実数型」に実数型の内部表現や実数リテラルの型の選択ルールについて説明を追加しました。
実数リテラルの型の選択については計算処理を重視する方にとっては重要な問題だと思います。Free PascalやLazarusを長年使用してきましたが、こういう仕様になっているとは最近まで気が付きませんでした。うかつと言わざるを得ません。最初はコンパイラのバグかと思いましたが、調べたところ対応するディレクティブやコマンドライン コンパイラオプションが存在するので仕様で間違いないようです。
Free Pascal 3.2.2 のデフォルトでは、1.0 / 3.0 が 0.333333343267441 とSingle型の結果となってしまいます。開発版の FPC 3.3.1 でも同じなので、次リリースも変わらないと思われます。
是非一読ください。
Embarcadero Delphiでも確認しましたが、DelphiはデフォルトでDouble型で計算しています。
コンパイラディレクティブ「{$MINFPCONSTPREC 64}」についてはObject Pascal 備忘録のひな型ソースにも追加の検討をします。








