Makale numarası: 125056 - Son Gözden Geçirme: 24 Şubat 2005 Perşembe - Gözden geçirme: 2.1 BILGI: Duyarlığı ve doğruluğu, kayan nokta hesaplamaları
Bu SayfadaÖzetYuvarlama Duyarlığı hangi, birçok durumda vardır ve kayan nokta hesaplamalarında doğruluğu, Programcı için de şaşırtıcı olan sonuçlar üretmek için çalışabilirsiniz. Gelmelidir dört genel kurallar vardır:
Daha fazla bilgiGenel olarak, yukarıda açıklanan kurallar, C, C++ ve Çevirici gibi tüm diller için geçerlidir. Aşağıdaki örneklerde FORTRAN PowerStation kullanma kuralları bazılarını göstermektedir. Tüm örnekleri için c yazılan son biri dışında tüm seçeneksiz FORTRAN PowerStation 32 kullanarak derlendi Lütfen sayısal sabitlere ve kayan noktalı değer bir iç gösterim için bir açıklama için makale 36068 (http://support.microsoft.com/kb/36068/EN-US/ ) açıklaması için Microsoft FORTRAN ile sağlanan FORTRAN manual(s) bakın. Örnek 1Ilk örnek, iki şey gösterir:
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) Örnek kodÖRNEK 2Örnek 2 ikinci derece denklem Denklem kullanır. Bu, hatta çift duyarlıklı hesaplamaları kusursuz değildir ve bir hesaplamanın sonucunu önce sınanacağı üzerinde küçük hataları farklı sonuçlar varsa bağımlı gösterir. Örnek 2 KAREKÖK fonksiyonu yalnızca biraz daha çok negatif girilir, ancak yine de geçersiz. Çift duyarlıklı hesaplamaları küçük hatalar varsa, sonuç olacaktır:Root = -1.1500000000 Çalışma zamanı hatası M6201: MATEMATIK -sqrt: ETKIALANı hata Örnek kodÖRNEK 3Örnek: 3 en iyi duruma getirme açık olsa bile, iyileştirme nedeniyle değerleri geçici olarak beklenenden yüksek duyarlık korunmasını ve bu iki kayan nokta değeri için eşitlik sınamak çok unwise olduğunu gösterir.Bu örnekte, iki eşittir ve eşit değil değerlerdir. Ilk Eğer, en Z değerinin hala işlemcisi'nin yığında ve aynı duyarlığı Y olarak sahiptir. Bu nedenle, X, Y eşit değildir ve ilk iletiyi yazdırılır. Ikinci EĞER anda Z bellekten yüklenmesine ve dolayısıyla duyarlık ve X değeri ve ikinci ileti de yazdırılır. Örnek kodÖRNEK 4Örnek kodu 4 ilk bölümü için 1.0 yakın iki sayı arasındaki olası en küçük farkın hesaplar. Bunu 1.0 bir ikili gösterimi için tek bir bit ekleyerek yapar.x = 1.00000000000000000 (one bit more than 1.0) y = 1.00000000000000000 (exactly 1.0) x-y = .00000000000000022 (smallest possible difference) Ikinci örnek kodu 4 bölümü 10.0 yakın 2 sayıları arasındaki olası en küçük farkın hesaplar. Yeniden bunu 10.0 bir ikili gösterimi için tek bir bit ekleyerek yapar. Sayı 10'yakınında arasındaki farkı farkı 1'yakınında büyük olduğuna dikkat edin. Bu genel ilkesine gösterir, büyük mutlak değeri çok sayıda daha hassas bir şekilde, belirli bir bit sayısı depolanabilir. 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 Örnek kodÖRNEK: 5C, varsayılan olarak çift kayan sabit sayılardır. "F", "89.95f" olduğu gibi bir kayan nokta değeri belirtmek için kullanın.Bu makaledeki bilginin uygulandığı durum:
Otomatik TercümeÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir. Makalenin İngilizcesi aşağıdaki gibidir:125056
(http://support.microsoft.com/kb/125056/en-us/
)
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukMakale çevirileri |






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


Üste