Realsは正確でないことが知られていますが、小数点を使わない限り(=整数)、非常に大きな数でも100%の精度で計算できます。
53ビットまでの数、正確には [-(2^53)+1, (2^53)-1] つまり -9,007,199,254,740,992 から 9,007,199,254,740,992 までが正確に表現されます。
実数について
Wikipediaの倍精度2進浮動小数点の定義を見ると、桁の分割と精度についてこのように書かれています。
「53ビットのシグニフィカンドの精度は、10進数で15から17桁の精度になる(2-53≈1.11×10-16)。有効数字が最大15桁の10進文字列をIEEE754倍精度表現に変換し、同じ桁数の10進文字列に変換し直した場合、最終結果は元の文字列と一致するはずである。IEEE 754倍精度の数値を少なくとも17桁の有効数字を持つ10進文字列に変換し、倍精度表現に戻した場合、最終結果は元の数値と一致しなければならない。”
文字列に変換する
長年、Real型で大きな数値の計算が可能でしたが、文字列への変換や文字列からの変換は12桁の科学的記数法に限られ、結果として精度が損なわれていました。
4D v19 R6では、Real型数値(整数を提示)からText型への変換と精度を向上させました。
文字列への変換の改良は、String()コマンドと、文字列形式で数値を返すJSONとXMLコマンドに関係します。
コードエディター
例えば、コード・エディターで次のように入力できます。
$r:=2147483647000000
と入力すると、次のようにフォーマットされるのではなく、そのまま表示されます。
と入力しても、そのまま表示されます。
コーディングが楽しくなりますね。