Bu dosya, Excel'de ondalıklı sayıların ikilik sistemde yaklaşık olarak saklanması nedeniyle ortaya çıkan karşılaştırma hatalarını örneklerle gösterir. Hücrede aynı görünen iki değerin eşitlik kontrolünde yanlış sonuç vermesinin nedeni ve ROUND ile giderilmesi adım adım izlenebilir.
Sheet4'te ise her satır bir önceki değere adım eklenerek yuvarlanır:
Dosyanın içeriği
- Sheet1: "Example 1 - Typical rounding problem" örneği. Item, Discount ve Check sütunlarında ürün listesi (Bananas, Pasta Sauce, Greek Yogurt, Coffee, Frozen Pizza, Chicken, Cereal, Avocados) ve indirim tutarları yer alır. Tutarlar 0,34900000000000003 gibi uzun ondalıklı değerler olarak görünür.
- Sheet2: "Example 2 - Floating point errors with subtraction" örneği. Value 1, Result ve Check sütunlarında çıkarma sonuçları listelenir. Örneğin 15,37 ile ilgili sonuç 1,9999999999999574E-2 olarak çıkar.
- Sheet3: "Example 3 - Floating point errors with increments" örneği. Başlangıç, adım ve adım sayısı değerlerine göre -1,9 değerinden başlayan bir dizi üretilir. Sol sütunda ham sonuçlar (-1,7999999999999998 gibi), sağ sütunda yuvarlanmış sonuçlar (-1,8) yan yana gösterilir.
- Sheet4: Aynı artış örneğinin SEQUENCE kullanmayan, hücre hücre toplayan sürümü.
Kullanılan formüller
- Sheet1 ve Sheet2 içindeki Check sütunu, hesaplanan değerin beklenen değerle eşit olup olmadığını mantıksal karşılaştırmayla kontrol eder. Ham sonuçlarda eşit görünen değerler bile FALSE dönebilir.
- Sheet2 içindeki fark hesabı iki hücreyi birbirinden çıkarır.
- SEQUENCE fonksiyonu, başlangıç ve adım değerlerinden dizi üretir.
- ROUND fonksiyonu, dizi sonuçlarını bir ondalık basamağa yuvarlayarak birikmiş küçük sapmaları giderir.
Sheet4'te ise her satır bir önceki değere adım eklenerek yuvarlanır:
=ROUND(C5+$F$5,1)
Nasıl kullanılır
- Sheet1 ve Sheet2'de Check sütunundaki sonuçları inceleyin; görünürde eşit değerlerin neden farklı çıktığını görürsünüz.
- Sheet3'te Start, Step ve Steps hücrelerindeki değerleri değiştirerek ham ve yuvarlanmış dizileri karşılaştırın.
- Kendi çalışmanızda eşitlik kontrolü yapılacak hesapların etrafına ROUND ekleyin.
- SEQUENCE dinamik dizi fonksiyonudur; Sheet3 için bu fonksiyonu destekleyen bir Excel sürümü gerekir.