我知道在发布模式下有一些优化,我在发布模式下得到的结果是1e-9,在调试模式下得到的结果是0,这个错误可以接受吗?
当然,只有你自己知道什么是你的程序可以接受的。真正的问题是:这种差异是否意味着未定义行为(UB),或者它是否合法。
这个问题的答案取决于编译器在发布模式下允许执行什么样的浮点优化。如果您谈论的是Visual Studio,则这是由浮点模型设置决定的。如果是“快”,这种优化肯定是允许的。对于其他模式,很可能不会--但很难保证。