在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都会出现这个问题。
问题在哪里?有什么提示可以避免这个问题吗?这会导致严重的数值问题。