我有這樣的代碼非常簡單:atan2f精度上的Xcode
#include <cstdio>
#include <cmath>
int main(int argc, const char * argv[])
{
printf("%2.21f", atan2f(0.f, -1.f));
return 0;
}
隨着下一個輸出上英特爾CPU:
Visual Studio 2010: 3.141592741012573200000
GCC 4.8.1 : 3.141592741012573242188
Xcode 5 : 3.141592502593994140625
閱讀Appple手冊頁atan2f後,我希望打印的值是接近3.14159265359
,因爲他們說他們會返回+pi
以獲得像我現在使用的特殊值。正如你所看到的,從Xcode返回的值和期望值之間的差異是相當大的。
這是一個知道的問題?如果是的話,有沒有解決辦法可以解決這個問題?
我正在調試模式下進行測試。在asm代碼中,在所有平臺上都會調用atan2f()函數。 – Felics
因此VS和/或GCC上的'atan2f'會將高精度數字轉換成多少? –
結果中的正確數字是「3.141592」。所有三個近似值之後的數字都是錯誤的;它們是浮點表示的工件。 – Joni