17.3.1 整数変換関数 (integer conversion functions): int floor ceil round

gnuplot の整数変数値は、使用環境が許せば、64 ビットの精度で保存します。

gnuplot の複素数変数値、実数変数値は、ほとんどの使用環境で IEEE754 の binary64 (double) 浮動小数形式で保存します。その精度は、53 ビットに制 限され、有効数字はおよそ 16 桁です。

よって、絶対値が 2^53 よりも大きい整数は、浮動小数変数で一意に表現する ことはできません。つまり、大きな N に対する int(real(N)) という操作は N に近いけれども N とは異なる整数を返す可能性があります。

さらに、浮動小数値を切り捨てにより整数値に変換する関数は、その値自身が 小さくても、16 桁以上の精度に依存する操作では期待する値を得られない可能性があります。例えば、int(log10(0.1)) は、-1 でなく 0 を返しますが、 それはその浮動小数表現が -0.999999999999999... に等しいからです。 以下も参照: overflow (101.64)

int(x) は、引数の 0 の方向に切り捨てた整数部分を返します。 |x| > 2^63、すなわち整数値として大きすぎる場合は NaN を返します。 |x| > 2^52 の場合は、返り値はある整数の近傍におさまりますが、浮動小数 精度の制限のためにそれらを区別できません。 以下参照: integer conversion (17.3.1)

floor(x) は、x の実数部分以下の最大の整数を返します。 |x| > 2^52 の場合、その値は一意に決定できませんので、その場合は NaN を 返します。以下参照: integer conversion (17.3.1)

ceil(x) は、x の実数部分以上の最小の整数を返します。 |x| > 2^52 の場合、その値は一意に決定できませんので、その場合は NaN を 返します。以下参照: integer conversion (17.3.1)

round(x) は、x の実数部分に一番近い整数を返します。 |x| > 2^52 の場合、その値は一意に決定できませんので、その場合は NaN を 返します。以下参照: integer conversion (17.3.1)

竹野茂治@新潟工科大学
2021-06-25