在 Visual C++ 中,我在 C++ 程序中编写了以下示例:
float f1 = 42.48f;
double d1 = 42.48;
double d2 = f1;
我用 Visual Studio 2005 编译了程序。在调试器中,我看到以下值:
f1 42.480000 float
d1 42.479999999999997 double
d2 42.479999542236328 double
根据我的知识,d1 是可以的,但 d2 是错误的。
/fp=precise 和 /fp=strict 以及 /fp=fast 一样,也会出现问题。
这里有什么问题?任何提示如何避免这个问题?这会导致严重的数值问题。