以下断言在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
的双倍略有不同的值吗?
(我知道某些值无法用二进制表示。我想知道的是为什么结果的双精度值包含不同的值,以便我能理解它。)
谢谢!