FORTRAN には、倍精度数を整数値に変換する関数がいくつか用意されています。切り捨て/丸めの方法が異なります。これらを使用する複雑な科学アルゴリズムを変換しています。
FORTRAN のドキュメントによると、
aint(x)は、x と 0 の間の最も近い x の整数値を返します。
anint(x)は、xに最も近い整数値を返します。ただし、途中の場合は、より大きな整数値に丸められます。
nint(x)は、x を最も近い int 値に丸める int 形式に変換します。
これらを C# で実装している人はいますか? 正解するのは難しいかもしれません。
(int)x は aint() と一致するように見えます
Convert.ToInt32(x) は上記のいずれとも一致しません。
Trunc(x) は上記のいずれとも一致しません。
Round(x) は anint または nint に一致する可能性があります。
anint と nint の違いは戻り値の型にあるようです。anint は倍精度値を返しますが、nint は整数を返します。両方が使用されます (実際のサンプル):
DOUBLE PRECISION A、B、C、D、E、F、G
... ここで設定される値 ...
F = ANINT(AB) + ANINT(CD) + ANINT(B+DE)
G = NINT(F) + 1D0;
おそらく、FORTRAN の専門家は、作成者が両方を使用することを選択した理由を明確にするのに役立つ可能性があります (意図的なものだと思います)。