簡體   English   中英

C++ 浮點數差異

[英]C++ Floating point difference

我試圖在 2 個不同的平台上獲得完全相同的結果,即 Solaris 和 Linux(sun-studio vs GCC)。 整個代碼使用雙數據類型。 但是當我打印輸出時,我看到浮點數的差異(如小數點后 20 位)。

我需要知道的是我是否可以設置一些編譯器標志來使 GCC 和 sun-studio 編譯器的行為相同。 附加圖像顯示了 Double 數據類型的差異。 左側是 GCC 的輸出,另一側是 sun-studio。

在此處輸入圖片說明

主要問題來自於此:

我試圖在 2 個不同的平台上獲得完全相同的結果

您不能保證在兩個不同的平台上獲得相同的結果。 他們在實施浮動操作的方式上可能有很多不同。

您的問題的一種解決方案:定點算術。

另外,看看這些答案:

跨平台浮點一致性

IEEE float 和 double 是否保證在任何操作系統上都具有相同的大小?

它們是您了解正在發生的事情的一個很好的開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM