Napotkałem pewne dziwne zachowanie, przynajmniej w moim własnym umyśle, podczas debugowania kodu zaangażowanego w ustalenie, czy operacja dodawania zmniejszyłaby liczbę podwójną. Oto przykładowy program demonstrujący to, co znalazłem.Czy występuje błąd numeric_limits, czy jestem po prostu zdezorientowany?
#include <iostream>
#include <limits>
using std::cout;
using std::endl;
using std::numeric_limits;
int main()
{
double lowest = numeric_limits<double>::lowest();
bool truth = (lowest + 10000) == lowest;
cout << truth << endl;
}
Po uruchomieniu tego kodu uzyskujemy wynik. Czy to jest błąd, czy po prostu jestem pozbawiony snu?
OP (np. Matthew) powinien bezwzględnie przeczytać http://floating-point-gui.de/ –
@MatthewPapageorge również: [Format podwójnej precyzji zmiennoprzecinkowej] (http://en.wikipedia.org/ wiki/Double-precision_floating-point_format) – Rimas
Dzięki za szybką i jasną odpowiedź, John. Bardzo to doceniam. Dziękuję Basile i Rimasowi za lekturę. –