Что происходит, когда переменная с плавающей точкой выходит за пределы?
Я заметил две вещи:
std::numeric_limits<float>::max()+(a small number)
дает: std::numeric_limits<float>::max()
.
std::numeric_limits<float>::max()+(a large number
любить:std::numeric_limits<float>::max()/3)
дает инф.
Почему эта разница? 1 или 2 приводит к ПЕРЕКЛЮЧЕНИЮ и, следовательно, к неопределенному поведению?
Редактировать: Код для тестирования это:
1.
float d = std::numeric_limits<float>::max();
float q = d + 100;
cout << "q: " << q << endl;
2.
float d = std::numeric_limits<float>::max();
float q = d + (d/3);
cout << "q: " << q << endl;