【发布时间】:2015-08-21 23:56:41
【问题描述】:
我对 MSVC ldexp 行为感到有点惊讶(它发生在 Visual Studio 2013 中,但也发生在至少 2003 年之前的所有旧版本中......)。
例如:
#include <math.h>
#include <stdio.h>
int main()
{
double g=ldexp(2.75,-1074);
double e=ldexp(3.0,-1074);
printf("g=%g e=%g \n",g,e);
return 0;
}
打印
g=9.88131e-324 e=1.4822e-323
第一个 g 奇怪地圆了...
它是 2.75 * fmin_denormalized,所以我绝对期待第二个结果 e.
如果我评估 2.75*ldexp(1.0,-1074) 我正确地得到与 e 相同的值。
是我的期望太高,还是微软没有遵守某些标准?
【问题讨论】:
标签: c++ c visual-studio floating-point