这种感觉就像只能在原地失败的那种代码,但我会尝试将它调整为代表我所看到的代码片段。 float f = myFloat * myConstInt; /* Where myFloat==13.45, and myConstInt==20 */
int i = (int)f;
int i2 = (int)(myFloat * myConstInt);
步进代码后,i == 269和i2 ==
这个问题。 Microsoft Visual C++ 2005编译器,32位windows xp sp3,amd 64 x2 cpu。 代码: double a = 3015.0;
double b = 0.00025298219406977296;
//*((unsigned __int64*)(&a)) == 0x40a78e0000000000
//*((unsigned __int6
可能重复: Floating point inaccuracy examples double a = 0.3;
std::cout.precision(20);
std::cout << a << std::endl;
结果:0.2999999999999999889 double a, b;
a = 0.3;
b = 0;
for (char i = 1; i <= 50; i+
在大多数情况下,我明白浮点比较测试应该使用超过一系列值(abs(x-y)< epsilon)来实现,但是自减是否意味着结果将为零? // can the assertion be triggered?
float x = //?;
assert(x-x == 0)
我的猜测是南/ inf可能是特殊情况,但我更关心简单的值会发生什么。 编辑: 我很高兴来接,如果有人可以举一个参考(IEEE浮