Thursday, September 10, 2009

Release版本的float精度

一个C++程序用VC编译出来的Debug版本与Release版本运行结果不一致(Debug版正确而Release版出错),而用gcc编译的结果运行也没问题。最终发现这是因为VC编译的Debug版与Release版的float型计算精度不同,后者对精度采用了某些优化措施。为了避免可能由此引起的问题,可以在编译Release版时加上'/Op'选项(即Settings->C/C++->Optimizations中的Improve Float Consistency选项)。

参考:
http://blog.chinaunix.net/u2/82078/showart_1292311.html
http://www.velocityreviews.com/forums/t291453-floating-point-bug-in-visual-studio-2003.html