标签: c visual-studio-2010 visual-c++ floating-point-precision
似乎VS2010编译器计算具有双精度的表达式,除非完全禁用编译器优化(/Od)。
/Od
static const float a = 1.0f; if (b < (float)(1.0f + a))...
这里,1.0f + a首先使用双精度计算,然后在优化级别不是/Od时将其转换为单精度。不幸的是,在将编译器浮点模型设置为strict时,我们不能将预编译器#defines与计算表达式一起使用,因此这不是一个选项。
1.0f + a
strict
#defines
如何以适当的方式处理它并强制编译器以单精度计算上述语句?