文章編號: 125056 - 上次校閱: 2005年2月24日 - 版次: 2.1 資訊: 精確度和浮點計算精確度
在此頁中結論有很多情況下哪一種整數位數四捨五入,而浮點計算的精確度可以處理來產生給程式設計人員驚人的結果。有四個應該遵循的一般規則:
其他相關資訊在一般上面所述規則可以套用到所有包括 C、 C + + 和組合語言的語言。下面的範例會示範某些使用 FORTRAN PowerStation 規則。所有的範例使用編譯 FORTRAN PowerStation 32 沒有除了最後一個 C.所撰寫的以外的任何選項 請參閱 FORTRAN 參考手冊隨附的數字常數和內部表示的浮點值的描述的發行項 36068? (http://support.microsoft.com/kb/36068/EN-US/ ) 說明 Microsoft FORTRAN。 範例 1第一個範例將示範兩件事:
x = 1.100000000000000 y = 1.100000023841858 true = 1.320000000000000 (multiplying 2 double precision values) y = 1.320000052452087 (multiplying a double and a single) z = 1.320000081062318 (multiplying 2 single precision values) 範例程式碼範例 2範例 2 使用 quadratic 方程式。它示範甚至雙精度計算並非完美,並計算的結果應該經過測試之前它相依於小錯誤如果可以有極端的結果。平方根函式範例 2 中輸入只是稍微非常負,但仍不正確。如果雙精度計算並沒有輕微錯誤,結果會是:Root = -1.1500000000 執行階段錯誤 M6201: 數學 -sqrt: 網域時發生錯誤 範例程式碼範例 3範例 3 示範因為即使未開啟最佳化發生的最佳化以值可能會暫時保留較高的精確度比預期,及是要測試相等的兩個浮動點值非常周詳。在這個範例兩個值會有相等和不相等。在第一個 IF Z 值會仍在副處理器的堆疊上,且有相同的精確度為 Y。因此 X 不等於 Y,且第一個訊息列印。在第二個 IF 階段,Z 從記憶體載入,並且因此有相同的整數位數和值,以 X,和第二個訊息也會列印。 範例程式碼範例 4範例程式碼 4 的第一個部分會計算兩個數字接近到 1.0 之間最小的可能差異。它會將單一位元加入至 1.0 二進位表示。x = 1.00000000000000000 (one bit more than 1.0) y = 1.00000000000000000 (exactly 1.0) x-y = .00000000000000022 (smallest possible difference) 第二個部分的範例程式碼 4 計算到 10.0 接近 2 個數字之間最小的可能差異。再次,它會藉由將單一位元加入 10.0 二進位表示。請注意靠近 10 的數字之間差異大於接近 1 差異。這示範了一般的原則,越大絕對值的一個數字就越不精確它可以儲存在指定位元數。 x = 10.00000000000000000 (one bit more than 10.0) y = 10.00000000000000000 (exactly 10.0) x-y = .00000000000000178 x = 4024000000000001 Hex y = 4024000000000000 Hex x = 3FF0CCCCCCCCCCCD (Hex representation of 1.05D0) x-1 = .05000000000000004 範例程式碼範例 5在 C,浮動常數是預設的雙精度浮點數。使用 「 f 」 來表示為中 89.95f"的浮點值。這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:125056?
(http://support.microsoft.com/kb/125056/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方