Следующее утверждение терпит неудачу в RAD Studio 2010 (и, кстати, будет успешным в Visual Studio 2010):
double d1 = 0.0104;
double d2 = 0.0;
std::istringstream ss("0.0104");
ss >> d2;
assert(d1 == d2);
Это меня немного удивило.Я проследил в оператор извлечения, чтобы увидеть, что происходит, дошел до dinkumware/xlocnum
и не смог проследить дальше.
Может кто-нибудь сказать мне, почему __Stodx(... "0.0104")
возвращает значение, незначительно отличающееся отdouble, инициализированный как 0.0104
?
(я знаю, что некоторые значения не могут быть представлены точно в двоичном виде. Что я хочу знать, так это то, почему результирующие числа типа double содержат разные значения, чтобы я мог их понять.)
Спасибо!