Makale numarası: 78113 - Son Gözden Geçirme: 13 Mayıs 2010 Perşembe - Gözden geçirme: 7.0 Excel'de kayan nokta hesaplamaları tutarsız sonuçlar verebilir
Bu SayfadaÖzet Bu makalede, Microsoft Excel'in kayan noktalı sayıları nasıl sakladığı ve hesapladığı anlatılır. Bu işlem, yuvarlama ve/veya verilerin kesilmesi nedeniyle bazı sayıların veya formüllerin sonuçlarını etkileyebilir. Genel BakışMicrosoft Excel, kayan noktalı sayıların saklanması ve hesaplanması bakımından IEEE 754 belirtimine uygun olarak tasarlanmıştır. IEEE, diğer görevlerinin yanı sıra bilgisayar yazılımları ve donanımlarına yönelik standartları belirleyen uluslararası bir kuruluş olan Institute of Electrical and Electronics Engineers'ın kısaltmasıdır. 754 belirtimi yaygın olarak kullanılan ve ikili düzen tabanlı bilgisayarlarda kayan noktalı sayıların nasıl saklanması gerektiğini açıklayan bir belirtimdir. Yaygın olarak kullanılmasının nedeni, kayan noktalı sayıların kabul edilebilir boyutta bir alanda saklanmasına ve hesaplamaların göreli olarak hızlı gerçekleştirilmesine olanak vermesidir. 754 standardı, günümüzde Intel, Motorola, Sun ve MIPS işlemcileri gibi kayan noktalı hesaplamalar yapan PC tabanlı mikroişlemcilerin neredeyse tümündeki sayısal veri işlemcilerinde ve kayan noktalı işlem birimlerinde kullanılır.Sayılar saklanırken, her bir sayıya veya kesirli sayıya karşılık gelen bir ikili sayı kullanılır. Örneğin 1/10 değeri, ondalık sayı sisteminde 0,1 olarak gösterilebilir. Ancak aynı sayı ikili düzende yinelenen ikili ondalık değeri haline gelir 0001100110011100110011 (bu şekilde devam eder) ve sonsuza kadar yinelenebilir. Bu sayı sonlu (sınırlı) bir alanda gösterilemez. Bu nedenle de bu sayı, aşağı doğru yaklaşık bir değere yuvarlanarak 2,8E-17 olarak saklanır.Ancak IEEE 754 belirtiminde üç genel kategoride özetlenebilecek bazı kısıtlamalar bulunmaktadır:
Daha fazla bilgiEn Büyük/En Küçük KısıtlamalarıHer bilgisayarın işleyebileceği en büyük ve en küçük sayı bellidir. Sayının saklanacağı belleğin bit sayısı sonsuz olmadığı için, saklanabilecek en büyük veya en küçük sayı da sonsuz değildir. Excel'de saklanabilecek en büyük sayı 1,79769313486232E+308 ve en küçük pozitif sayı 2,2250738585072E-308 değeridir.IEEE 754'e Bağlı Kalınan Durumlar
IEEE 754'e Bağlı Kalınmayan Durumlar
DuyarlıkKayan noktalı sayı, ikili düzende 65 bit aralığında üç bölüm olarak saklanır: işaret, üs değeri ve mantis.Bu tabloyu kapa
Mantis ve üs değeri ayrı bileşenler olarak saklanır. Dolayısıyla, duyarlık miktarı, söz konusu sayının boyutuna (mantisine) bağlı olarak değişebilir. Excel'de 1,79769313486232E308 ile 2,2250738585072E-308 arasındaki sayılar saklanabilir, ancak bu işlem yalnızca 15 basamaklı bir duyarlıkla yapılabilir. Bu kısıtlama, IEEE 754 belirtiminin kesin olarak izlenmesi nedeniyle oluşur ve Excel'in bir kısıtlaması değildir. Bu duyarlık düzeyi diğer elektronik tablo programlarında da bulunmaktadır. Kayan noktalı sayılar şu biçimde gösterilir; burada üs değeri, ikili üs değeridir: X = Kesir * 2^(üs değeri - sapma) Kesir, sayının normalleştirilmiş kesirli bölümüdür; normalleştirilmiş olmasının nedeni, üs değerinin ilk bit her zaman 1 olacak şekilde ayarlanmasıdır. Böylece, ilk bit değerinin saklanması gerekmeyeceğinden, bir bit daha fazla duyarlık sağlanır. İşte bu nedenle de örtülü bir değeri vardır. Bu, üs değerinin ondalık ayırıcının bir basamak solunda kullanıldığı bilimsel gösterime benzer; ancak ikili düzende yalnızca 1'ler ve 0'lar olacağından, üs değerini ilk bit her zaman 1 olacak şekilde uygulayabilirsiniz.Sapma, negatif üs değerlerinin saklanmasını önlemek için kullanılan sapma değeridir. Tek duyarlıklı sayıların sapması 127, çift duyarlıklı sayıların sapması ise 1,023'tür (bunlar ondalık değerlerdir). Excel, sayıları çift duyarlıklı olarak saklar. Çok Büyük Sayılar Kullanmaya ÖrnekAşağıdaki verileri yeni bir çalışma kitabına girin:A1: 1,2E+200 B1: 1E+100 C1: =A1+B1 Çok Küçük Sayılar Kullanmaya ÖrnekAşağıdaki verileri yeni bir çalışma kitabına girin:A1: 0,000123456789012345 B1: 1 C1: =A1+B1 Duyarlık Hatalarını DüzeltmeExcel, yuvarlama hatalarını gidermek için iki temel yöntem sunar: YUVARLA işlevi ve Duyarlılık görüntülendiği gibi veya Duyarlığı göründüğü gibi ayarla çalışma kitabı seçeneği.Yöntem 1: YUVARLA İşleviYukarıdaki verilerin kullanıldığı şu örnekte, YUVARLA işlevi kullanılarak bir sayı beş basamağa zorlanır. Böylece sonuç başka bir değerle karşılaştırılabilir.A1: 1,2E+200 B1: 1E+100 C1: =YUVARLA(A1+B1;5) 1,2E+200 sonucunu verir. D1: =EĞER(C1=1,2E+200; DOĞRU; YANLIŞ) DOĞRU sonucunu verir. Yöntem 2: Duyarlılık Görüntülendiği GibiBazı durumlarda Duyarlılık görüntülendiği gibi seçeneğini kullanarak, yuvarlama hatalarının çalışmanızı etkilemesini önleyebilirsiniz. Bu seçenek, çalışma sayfasındaki her sayıyı görüntülenen değere sahip olmaya zorlar. Bu seçeneği etkinleştirmek için şu adımları izleyin:
Yinelenen İkili Sayılar ve Sıfıra Yakın Sonuçlu HesaplamalarKayan noktalı sayıları ikili düzende saklama ile ilgili bir başka sorun da, ondalık düzende sonlu olan bazı yinelenmeyen sayıların ikili düzende sonsuz olan yinelenen sayılar olmasıdır. Bunun en yaygın örneği 0,1 değeri ve benzerleridir. Bu sayılar ondalık düzende düzgün biçimde gösterilebilmesine karşın, aynı sayı mantiste saklandığında, ikili düzende şu yinelenen ikili sayı haline gelir:000110011001100110011 (bu şekilde devam eder) IEEE 754 belirtimi hiçbir sayı için özel bir çözüm sağlamaz; saklayabildiği kadarını mantiste saklar, geri kalanı keser. Bu durum, saklamada -2,8E-17 veya 0,000000000000000028 kadar bir hataya neden olur.0,0001 ondalık değeri gibi sık kullanılan ondalık kesirler bile ikili düzende tam olarak gösterilemez. (0,0001, noktadan sonra 104 bit içeren bir yinelenen ikili düzen kesridir). Bu, 1/3 kesrinin ondalık düzende tam olarak gösterilememesine benzer (0,33333333333333333333 değeri yinelenir). Bu durumda, Microsoft Visual Basic for Applications'ta şu basit örneğin neden Negatif Sayı Ekleme Örneği
Değerin Sıfıra Ulaşması Örneği
Ancak Excel 97'de, bu sorunu düzeltmek üzere bir iyileştirme kullanılmaya başlandı. Excel 97 ve sonrasında bir toplama veya çıkarma işlemi sıfır ya da sıfıra çok yakın bir değer verdiğinde, işlenen değeri ikili düzene veya ikili düzenden dönüştürme sonucunda oluşan hatalar giderilir. Yukarıdaki örnek Excel 97 ve sonrasında uygulandığında bilimsel gösterimde 0 veya 0,000000000000000E+00 değeri görüntülenir. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın: 172911
(http://support.microsoft.com/kb/172911/
)
10'un çok büyük veya çok küçük bir üs değeri alındığında sonuç hatalı oluyor (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir) 214373
(http://support.microsoft.com/kb/214373/
)
10'un çok büyük veya çok küçük bir üs değeri alındığında sonuç hatalı oluyor (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir) Kayan noktalı sayılar ve IEEE 754 belirtimi hakkında daha fazla bilgi için, lütfen şu World Wide Web sitelerine bakın: http://www.ieee.org
(http://www.ieee.org)
http://stevehollasch.com/cgindex/coding/ieeefloat.html (http://stevehollasch.com/cgindex/coding/ieeefloat.html) Referanslar Bu hatalara geçici çözüm bulma hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın: 214118
(http://support.microsoft.com/kb/214118/
)
Kayan nokta hesaplamalarında yuvarlama hatalarını düzeltme (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir) Bu makaledeki bilginin uygulandığı durum:
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukHemen Yardım AlMakale çevirileri
|






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