Учитывая, что числа относительно малы (от -1 до ~ 1) и являются поплавками и генерируются случайным образом, можете ли вы получить «недействительную операцию с плавающей запятой», добавив слишком много из них? Я спрашиваю, потому что это то, что, очевидно, происходит в моей программе прямо сейчас и очень редко. Кроме того, как отключить (или избежать) исключение?Может ли слишком много добавлений поплавков вызывать «недействительную операцию с плавающей запятой»?
На всякий случай, мой компилятор - gcc (i686-posix-dwarf-rev0, построенный проектом MinGW-W64). 5.1.0.
EDIT В соответствии с просьбой я предоставляю код. Однако добавление поплавков, вызывающих ошибку, является только моей гипотезой, вот почему я пришел сюда, чтобы узнать, может ли это быть моей проблемой. Если я запускаю код ниже, разумно ли, что я могу получить ошибку?
#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;
}
}
EDIT 2: Я не получаю сообщение об ошибке с кодом выше, мне просто нужно знать, если это могло произойти.
Можете ли вы показать [mcve]? – mindriot
'rand()' плохо. –
Вы действительно получили сообщение об ошибке с опубликованным кодом? –