鉴于数字相对较小(〜-1到~1)并且是浮点数并且是随机生成的,你是否可以获得浮点无效操作'添加太多了吗?我问,因为那是我现在的计划中发生的事情,而且很少发生。另外,如何禁用(或避免)此异常?
以防万一,我的编译器是gcc(i686-posix-dwarf-rev0,由MinGW-W64项目构建)5.1.0。
编辑根据要求我提供代码。但是,添加导致错误的浮动只是我的推测,这就是我来到这里的原因,以确定这是否是我的问题。如果我在下面运行代码,我可以得到错误是否合理?
#include <iostream>
int main()
{
float sum = 0, add = 0;
while (true)
{
add = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
if (rand() % 2) add *= -1;
sum += add;
}
}
编辑2:我没有收到上述代码的错误,我只需要知道它是否会发生。
答案 0 :(得分:1)
IEEE 754标准定义了以下情况:发生“无效操作”浮点异常:
您的示例代码不会触发任何这种情况,因此问题会出现在代码的其他位置。