私が書いたコードの一部に、プログラムから (つまり MATLAB で) 再現しようとすると発生しない奇妙な動作を見つけました。
次のように、配列に対して操作を行っています。
a[i] = a[i] / (sqrt(b[i]) * sqrt(c[i]));
ここでa
、b
とc
は float 型の配列です。a
、b
およびc
事前除算の値の範囲は2000
~6000000
演算の結果は、配列のすべての要素に対してゼロですが、分子と分母の値を別々に見ると、特定の要素に対して、演算は89509.0 / 90240,375
に等しくなり0,991895258
ます。
では、float を使用したプログラム内での完全な操作が機能しないのはなぜでしょうか。おそらく何時間もの難読化されたデバッグが原因でしょうか?