acos(double)
給出了x64和X32的Visual Studio不同的結果。ACOS(雙)給出了x64和X32的Visual Studio不同的結果
printf("%.30g\n", double(acosl(0.49990774364240564)));
printf("%.30g\n", acos(0.49990774364240564));
在x64
:1.0473040763868076
上X32:1.0473040763868078
上linux4.4 x32或x64的與上證所啓用:1.0473040763868078
有沒有一種方法,使VSx64 acos()
給我1.0473040763868078
的結果?
轉載我在VS2015:C:\項目\ ConsoleApplication1 \發佈> ConsoleApplication1.exe中 1.04730407638680778070749965991 1.04730407638680778070749965991 C:\項目\ ConsoleApplication1 \ 64 \發佈> ConsoleApplication1.exe中 1.04730407638680755866289473488 1.04730407638680755866289473488 – Artimosha
什麼樣的回答是你在找什麼? C++標準允許這樣做(只有+ - * /和sqrt才能生成正確舍入的結果到尾數的最後一位)。那麼你是否要求提供不同庫實現的asm級別細節?確定性FP計算是一個非常難的問題,AFAIK通常必須避免更復雜的庫函數。即便如此,不同的編譯器和不同的體系結構使得C++非常困難。 –
@Artimosha:爲什麼這對你來說是個問題? IEEE754不保證超越函數的最準確結果。它只能保證四個基本操作和sqrt。 – geza