Следующее утверждение не работает в 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")
возвращает значение, которое незначительно отличается от двойного инициализированного значения 0.0104
?
(Я знаю, что некоторые значения не могут быть точно представлены в двоичном формате. Я хочу знать, почему результирующие двойники содержат разные значения, чтобы я мог это понять.)
Спасибо!