我試圖計算雙打機器精度值和++漂浮在C作爲作業的一部分。我在Windows 7中,64位使用Cygwin,這裏是代碼:機器最小精度差異
#include <iostream>
int main() {
double epsilon = 1;
while(1 + epsilon > 1)
epsilon = epsilon/2;
epsilon = 2*epsilon;
std::cout << epsilon << std::endl;
float epsilon_f = 1;
while(1 + epsilon_f > 1)
epsilon_f = epsilon_f/2;
epsilon_f = 2*epsilon_f;
std::cout << epsilon_f << std::endl;
return 1;
}
當我運行代碼,我收到1.0842e-019的兩個值。我查了一下,應該得到雙倍的2.22e-16和浮點值的1.19e-07。當我在Macbook上運行確切相同的代碼時,代碼將返回正確的值。什麼可能導致我的Windows機器上的差異?
嘗試改變-mfpmath上交所或387,並確保兩者都在64位模式與-m64。 cygwin可能會默認與macbook不同。此外-fno-快速數學 – 2015-02-06 02:14:52
如果你還在身邊,如果你發現我的答案有幫助,請標記爲接受的 - 這樣一來,其他人也不會在這個問題絆倒後,認爲它仍然需要回答。此外,如果答案沒有幫助,請隨時索取更多信息。 – 2015-02-13 23:35:20