v19では,Num
で数字を数値に変換した場合,5
で終わる実数の丸め処理が以前のバージョンとは違います。
- v16
$str1:="1210.9338094735" //→1210.933809474
$str2:="12109.338094735" //→12109.33809474
- v19
$str1:="1210.9338094735" //→1210.933809474
$str2:="12109.338094735" //→12109.33809473
これは仕様です。4Dは内部的にシステムAPIをコールしており,Microsoftの仕様に準拠しています。
Windows 10 バージョン 2004 (ビルド 19041) 以降の
printf
ファミリの関数では,丸め処理の IEEE 754 の規則に従って,正確に表現可能な浮動小数点数が出力されます。 以前のバージョンの Windows では,”5” で終わる正確に表現可能な浮動小数点数は常に切り上げられていました。 IEEE 754 では,最も近い偶数に丸める (“銀行型丸め” とも呼ばれます) 必要があることが示されています。