投稿日 | : 2005/05/22(Sun) 19:30 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^8: VBのバグです |
> > > > 四捨五入 ではなく丸めだと思うのですが(VB6.0 or .NET )
> > > 丸める方法が、四捨五入で丸めるか、切捨てで丸めるかの違いです。
> > Intは切捨て処理ですが、CIntは四捨五入ではありませんよ。
> 正確には、算術的な四捨五入ではなく、マイクロソフトの言う銀行型丸めというやつです。
あ。四捨五入ではない事は、ご存知だったんですね。(^^;
演算精度の話が出ている時なので、「四捨五入」≠「Banker's Rounding」である点には、
どうしてもツッコミたかったのです。失礼しました。
ところで、IEEE754(2進浮動小数点演算規格)の資料を探していたら、
このような記述を見つけました。
hhttp://www.ma.is.saga-u.ac.jp/minamoto/doc/kyudai.pdf
》6.3 Double rounding(2重丸め)
(中略)
》 Pentium4 では,なぜ,このような結果になるのでしょうか? それは,Pentium4 では,
》 まず拡張倍精度で計算をして,その後,倍精度に丸めているからです.
そういえば、実際に浮動小数演算を行うのは、CPUの仕事でした。
もしかして、OS等のソフトウェア環境だけでなく、CPU等の物理的環境によっても
動作が異なる可能性があるのかな……。
# それにしても、1回目と2回目で演算結果が異なるのは不思議。