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
Ancak IEEE 754 belirtiminde üç genel kategoride özetlenebilecek bazı kısıtlamalar bulunmaktadır:
- en büyük/en küçük kısıtlamaları
- duyarlık
- yinelenen ikili sayılar
En 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
- Yetersizlik durumu: Yetersizlik durumu, gösterilemeyecek kadar küçük bir sayı oluşturulduğunda ortaya çıkar. IEEE'de ve Excel'de sonuç 0'dır (tek özel durum, IEEE'de -0 kavramının kullanılması, ancak Excel'de kullanılmamasıdır).
- Taşma durumu: Taşma durumu, gösterilemeyecek kadar büyük bir sayı için ortaya çıkar. Excel bu durumda kendi özel gösterimini (#SAYI!) kullanır.
IEEE 754'e Bağlı Kalınmayan Durumlar
- Normalleştirilmemiş sayılar: Normalleştirilmemiş sayı, 0'ın üs değeri olarak gösterilir. Bu durumda, sayının tamamı mantiste saklanır ve mantisin başında 1 örtülü değeri olmaz. Dolayısıyla duyarlık kaybolur, sayı ne kadar küçükse duyarlık da o kadar çok kaybolur. Bu aralığın küçük ucundaki sayıların duyarlığı tek basamaklıdır.Örneğin: Normalleştirilmiş sayıda 1 örtülü değeri bulunur. Örneğin mantiste 0011001 gösteriliyorsa, en başta 1 örtülü değeri olacağı için normalleştirilmiş sayı 10011001 halini alır. Normalleştirilmemiş sayının başında 1 örtülü değeri yoktur; dolayısıyla 0011001 örneğinde, normalleştirilmemiş sayı aynı kalır. Bu durumda, normalleştirilmiş sayıda sekiz anlamlı basamak (10011001) bulunur; normalleştirilmemiş sayıda ise baştaki sıfırlar anlamsız olduğu için beş anlamlı basamak (11001) bulunur.
Normalleştirilmemiş sayılar temelde normal alt sınırdan daha küçük sayıların saklanmasına olanak veren bir geçici çözümdür. Microsoft, belirtimin isteğe bağlı olan bu bölümünü uygulamaz, çünkü normalleştirilmemiş sayılar yapıları gereği değişken sayıda anlamlı basamağa sahip olabilir. Bu da hesaplamalarda önemli hatalara neden olabilir.
- Pozitif/Negatif Sonsuz Sayılar: Sonsuz sayılar 0 ile bölme sonucunda oluşur. Excel sonsuz sayıları desteklemez, bu gibi durumlarda #SAYI/0! hatası verir.
- Sayı Değil (NaN): NaN, geçersiz işlemleri göstermek için kullanılır (sonsuz/sonsuz, sonsuz-sonsuz veya -1'in kare kökü gibi). NaN'ler bir programın geçersiz bir işlemden sonra devam edebilmesini sağlar. Excel bunun yerine hemen #SAYI! veya #SAYI/0! gibi bir hata oluşturur.
DuyarlıkKayan noktalı sayı, ikili düzende 65 bit aralığında üç bölüm olarak saklanır: işaret, üs değeri ve mantis.
|1 İşaret Biti||11 Bit Üs Değeri||1 Örtülü Bit||52 Bit Mantis|
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:
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:
C1 hücresindeki hesaplanan değer 1,2E+200 (A1 hücresiyle aynı) olacaktır. Örneğin EĞER(A1=C1) şeklinde EĞER işlevini kullanarak A1 ve C1 hücrelerini karşılaştırırsanız, sonuç DOĞRU olacaktır. Bunun nedeni, IEEE belirtiminin sayıları yalnızca 15 basamaklı bir duyarlıkla saklamasıdır. Yukarıdaki hesaplamanın saklanabilmesi için, Excel en az 100 basamaklı duyarlık gerektirir.
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:
C1 hücresindeki hesaplanan değer 1,000123456789012345 değil, 1,00012345678901 olacaktır. Bunun nedeni, IEEE belirtiminin sayıları yalnızca 15 basamaklı bir duyarlıkla saklamasıdır. Yukarıdaki hesaplamanın saklanabilmesi için, Excel en az 19 basamaklı duyarlık gerektirir.
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)
D1: =EĞER(C1=1,2E+200; DOĞRU; YANLIŞ)
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:
- Excel 2003 ve önceki sürümlerinde, Araçlar menüsünde Seçenekler'i tıklatın.
- Hesaplama sekmesinde, Duyarlılık görüntülendiği gibi onay kutusunu tıklatıp seçin.
- Excel 2007'de, Microsoft Office Düğmesi'ni tıklatın, Excel Seçenekleri'ni tıklatın ve sonra da Gelişmiş kategorisini tıklatın.
- Bu çalışma kitabını hesaplarken bölümünde, istediğiniz çalışma kitabını ve sonra da Duyarlığı göründüğü gibi ayarla onay kutusunu seçin.
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:
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
Sub Main()
MySum = 0
For I% = 1 To 10000
MySum = MySum + 0,0001
Next I%
Debug.Print MySum
End Sub
Negatif Sayı Ekleme Örneği
- Şu formülü yeni bir çalışma kitabına girin:
A1: =(43,1-43,2)+1
- A1 hücresini sağ tıklatın ve sonra da Hücreleri Biçimlendir'i tıklatın. Sayı sekmesinde, Kategori altında Bilimsel'i tıklatın. Ondalık basamak sayısı değerini 15 olarak ayarlayın.
Değerin Sıfıra Ulaşması Örneği
- Excel 95 veya önceki sürümlerde, şu formülü yeni bir çalışma kitabına girin:
A1: =1,333+1,225-1,333-1,225
- A1 hücresini sağ tıklatın ve sonra da Hücreleri Biçimlendir'i tıklatın. Sayı sekmesinde, Kategori altında Bilimsel'i tıklatın. Ondalık basamak sayısı değerini 15 olarak ayarlayın.
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:
Makale No: 78113 - Son İnceleme: 13 May 2010 - Düzeltme: 1