如果我在 windows 和 linux(ubuntu) 上编译以下 c 行,我会得到不同的结果。我想避免。我该怎么做?
double a = DBL_EPSILON;
double b = sqrt(a);
printf("eps = %.20e\tsqrt(eps) = %.20e\n", a, b);
linux输出:
eps = 2.22044604925031308085e-16 sqrt(eps) = 1.49011611938476562500e-08
窗口输出:
eps = 2.22044604925031310000e-016 sqrt(eps) = 1.49011611938476560000e-008
在 linux 上使用 gcc 和 clang 在 32 位和 64 位系统上测试的结果相同。在 Windows 上使用 gcc-mingw 在 32 位和 visual-studio 上使用 32 位和 64 位进行测试,结果也相同。