我需要轉換一個Fortran代碼轉換爲C++之一,我有以下問題:錯精度雙重價值
我試圖計算命名R12
兩者的Fortran 77和C++語言,但我的雙精度值獲得了彼此非常接近的兩個值,但具有兩個不同的精度。這裏是我的Fortran代碼:
R12 = sqrt(95699.68D0+1123.6D0*flx) - 408.99D0
與double flx = 192.9D0
。我得到的值是R12 = 149.97522253177789
我做C++一樣:
R12 = sqrt(95699.68+1123.6*flx) - 408.99 ;
我得到這裏的價值R12 = 149.97522253177794
。
你們可以幫我找到該差分距離,因爲它是非常重要的,我的工作有確切的精度
定義 「精確精密」?使用浮點值你永遠不會有「精確的精度」,而對於非理性數字,無論如何你都需要無限精度。 'double'具有15-17的精確度,這就是你在這裏所得到的。 –
你也可以在這裏閱讀更多關於這個:http://en.wikipedia.org/wiki/Machine_epsilon – CppChris
你是否檢查過(1)乘法的結果在兩種語言中都是相同的? (2)這兩種語言的添加結果是相同的? (3)'sqrt'的結果在兩種語言中都是相同的?您需要在SO之前詢問問題的實質。 –