Excel'de 22222.09482 girdiğimde formül çubuğunda 22222.0948199999 sayısını görüyorum.


28

Lütfen yardım eder misiniz - Garip bir durumum olduğundan, hücreye 22222.09482 sayısını girdiğimde formül çubuğunda farklı bir 22222.0948199999 sayısını görüyorum. Sorunun anlık görüntüsü aşağıdadır.

Örnek hata

Aşağıdaki numaraları girdiğimde de aynı davranışı görüyorum:

22222.09482
33333.09482
44444.09482
55555.09482

ama 11111.09482 ve 66666.09482, 77777.09482 .. 99999.09482'ye kadar girdiğimde doğru gösteriyorlar. Bunun yuvarlama ile ilgili olduğundan emin değilim? Herhangi bir yuvarlama profili oluşturmadım. Sorunu çözmeme yardım eder misiniz?


1
Temiz bul, benim için de aynısını yapar - sadece kullanabilir ROUND()misin? =ROUND(A1,5), sonra verileri Değerler olarak kopyala / yapıştır ve orijinal sayıları sil?
BruceWayne

1
@BruceWayne, ilginç bir şekilde ROUND()doğru rakamları gösterir, ancak değer olarak kopyala / yapıştır aslına geri götürür!
Rey Juna,

1
@ReyJuna - O zaman ROUND(A1,5)yapıştırılan değerleri tekrar yapın. Sonra bunları değerler olarak kopyalayın / yapıştırın ve Round()sonra tekrar kopyalayın / yapıştırın. ...: P ... bu ilginç ve @EugenRieck'in bir nedeni var. Güzel soru!
BruceWayne

1
22222.09482 ve 22222.0948199999 arasındaki farkı gerçekten umursuyor musunuz? 100 trilyonda 5 parçalık bir fark var.
Russell Borogove

4
Kayan nokta matematiği bozuk mu? . Ancak bu büyük olasılıkla bir hatadır, çünkü doubleyuvarlandığında çoğu insanın beklendiği gibi doğru değerleri göstermesine yetecek kesinliğe sahiptir
phuclv 16/18

Yanıtlar:


31

Bu bir hatadır.

Excel, diğer yanıtlara göre normal IEEE çift duyarlıklı gösterimini kullanır. Kesinlik, kabaca 16 ondalık basamağa karşılık gelen 53 önemli ikili basamaktır.

İlk 15 önemli ondalık basamağı görüntülemek her zaman "güvenlidir" . 15 rakam ile verilen herhangi bir ondalık sayıdaki “sunulan” sayının, 15. ondalık sayıyı birer birer değiştirerek elde edilen sayılardan güvenle ayırt edilmesi mümkündür. Örneğin, 15 basamaklı sayılar:

22222.09481 99999
22222.09482 00000
22222.09482 00001

Üç ayrı çift ​​hassasiyetli sayılarla eşleyin. Bu üç özelliğin hiçbiri, bu özel durumda, çift duyarlıklı sunumda "komşular" olmayacak.

Bu nedenle, kullanıcı ekranındaki ilk ikisini karıştırmak, Excel'in bir hatadır.

Aslında, bu alanda (16384 ve 32768 arasında) mutlak hassasiyet 2 -38'dir ve aşağıdaki sayılar gösterilebilir:

...
22222.09481 99998 96571 9714760780334472656250000
22222.09481 99999 00209 9502831697463989257812500 <-- the one closest to what Excel showed to the user
22222.09481 99999 03847 9290902614593505859375000
22222.09481 99999 07485 9078973531723022460937500
22222.09481 99999 11123 8867044448852539062500000
22222.09481 99999 14761 8655115365982055664062500
22222.09481 99999 18399 8443186283111572265625000
22222.09481 99999 22037 8231257200241088867187500
22222.09481 99999 25675 8019328117370605468750000
22222.09481 99999 29313 7807399034500122070312500
22222.09481 99999 32951 7595469951629638671875000
22222.09481 99999 36589 7383540868759155273437500
22222.09481 99999 40227 7171611785888671875000000
22222.09481 99999 43865 6959682703018188476562500
22222.09481 99999 47503 6747753620147705078125000
22222.09481 99999 51141 6535824537277221679687500
22222.09481 99999 54779 6323895454406738281250000
22222.09481 99999 58417 6111966371536254882812500
22222.09481 99999 62055 5900037288665771484375000
22222.09481 99999 65693 5688108205795288085937500
22222.09481 99999 69331 5476179122924804687500000
22222.09481 99999 72969 5264250040054321289062500
22222.09481 99999 76607 5052320957183837890625000
22222.09481 99999 80245 4840391874313354492187500
22222.09481 99999 83883 4628462791442871093750000
22222.09481 99999 87521 4416533708572387695312500
22222.09481 99999 91159 4204604625701904296875000
22222.09481 99999 94797 3992675542831420898437500
22222.09481 99999 98435 3780746459960937500000000 <-- the one closest to what the user types
22222.09482 00000 02073 3568817377090454101562500
22222.09482 00000 05711 3356888294219970703125000
22222.09482 00000 09349 3144959211349487304687500
22222.09482 00000 12987 2933030128479003906250000
22222.09482 00000 16625 2721101045608520507812500
22222.09482 00000 20263 2509171962738037109375000
22222.09482 00000 23901 2297242879867553710937500
22222.09482 00000 27539 2085313796997070312500000
22222.09482 00000 31177 1873384714126586914062500
22222.09482 00000 34815 1661455631256103515625000
22222.09482 00000 38453 1449526548385620117187500
22222.09482 00000 42091 1237597465515136718750000
22222.09482 00000 45729 1025668382644653320312500
22222.09482 00000 49367 0813739299774169921875000
22222.09482 00000 53005 0601810216903686523437500
22222.09482 00000 56643 0389881134033203125000000
22222.09482 00000 60281 0177952051162719726562500
22222.09482 00000 63918 9966022968292236328125000
22222.09482 00000 67556 9754093885421752929687500
22222.09482 00000 71194 9542164802551269531250000
22222.09482 00000 74832 9330235719680786132812500
22222.09482 00000 78470 9118306636810302734375000
22222.09482 00000 82108 8906377553939819335937500
22222.09482 00000 85746 8694448471069335937500000
22222.09482 00000 89384 8482519388198852539062500
22222.09482 00000 93022 8270590305328369140625000
22222.09482 00000 96660 8058661222457885742187500
22222.09482 00001 00298 7846732139587402343750000
...

Daha fazla detaylandırmak için 22222.09482bir hücreye yazmaya ve başka bir hücreye yazarak 22222.0948199999(beş izleyen dokuz) deneyin . Excel, yukarıdaki okla belirtilen iki IEEE temsilcisini seçmelidir. Ve sanırım öyle çünkü bu iki hücrenin farkını hesaplayabilirsiniz 9.82254E-11. Ancak her ikisi de aynı şekilde gösterilmiştir.

Eğer Excel, ilk göstermişti 17 basamak, yani IEEE numarası "altındaki" ondalık sayı tam olarak ne olduğunu almaya yararlı olacaktır. Bu durumda:

22222.0948199999 --> 22222.09481 99999 00
22222.09482      --> 22222.09481 99999 98

Ancak yanlış şekilde yuvarlanmış 15 rakam gösterilmesi yanıltıcı ve yararsızdır.


Kimse kasıtlı olduğunu iddia etmeden önce, neden 8.7aynı davranışı göstermiyor? En yakın çift duyarlıklı sayı 8.7:

8.69999999999999 93

bu kasıtlıymış gibi göstermelidir 8.69999999999999. Ama öyle değil.


9
Haklısın, bu bir hata. En az sayıda önemli basamak gösteren bir ikili kayan nokta sayısını dönüştürmek için algoritmalar zordur, ancak bilinmektedir. Birileri bazı önemli detayları kaçırmışa benziyor.
Mark Ransom

2
@Ruslan Kayan nokta aritmetiği, Yığın Taşması ve diğer SE bölgelerinde birçok konu gördüm ve çoğu zaman gerçek sayılarla ilgili olmadan, insanlar yüzer nokta hakkındaki her türlü genel gerçek ve kavramla ilgili bir cevap veriyorlar. ve davranışın IEEE uyumlu olup olmadığını doğrulama. Sanırım "Neden 2.1 + 2.2dönüyor 4.80000001?" Sorusunu gönderebilirim. ve kayan nokta kullanırken beklemem gereken şey olduğunu söyleyerek birçok cevap alıyorum.
Jeppe Stig Nielsen

1
@benshepherd: The LibreOffice ekran görüntüsü Excel ekran görüntüsünün ne yaptığını göstermiyor
Thomas Weller

1
@JeppeStigNielsen: 2.1 + 2.2 = 4.8? Bu sadece 0.5 kapalı. Bu normal.
Thomas Weller

@MarkRansom: öyleyse, Excel gerçekten bunu kendisi uygular? Excel, C ++ ya da bu kayan nokta hesaplamasını yapan bir şeyde uygulanmıyor mu? Söylediğin şey bu mu? Yoksa C ++ 'da bug zaten var, bu yüzden milyonlarca uygulamayı etkiliyor mu?
Thomas Weller

22

Excel, sayıları IEEE 754 ikili 64 bit kayan nokta biçiminde depolar . Anahtar "depolar" - ondalıktan ikiliye değiştirme, bir sayı saklandığında gerçekleşir, yalnızca gerçek bir hesaplamada kullanılmaz.

Bununla ilgili güzel bir makale Kayan Nokta Hassasiyetini Anlamak, yani “Excel Bana Neden Yanlış Cevap Verir?”

Çok sayıda önemli basamağa sahip büyük sayıları idare edecek bir elektronik çizelge programı yapmak mümkündür. Ancak bu çok pratik değil. Excel , 22222.09482'yi depolamak için fazlasıyla 34 ondalık basamağa izin veren IEEE 754 ondalık128 biçimini kullanmak için tasarlanmış olabilir . Fakat bunun yerine , sadece 16 hanenin altındaki 53 bit hassasiyete sahip olan çok daha yaygın olan binary64 Double Precision formatını kullanıyor. Bunun içinde sadece 10 basamaklı bir sayı için yeterli olacağını düşünebilirsiniz, ancak ondalıktan ikiliye dönüştürme işlemi işleri biraz zorlaştırır - yani, 2222209482, ikili64 sayısı olarak% 100 doğru saklanabilir, ancak 22222.09482 olamaz.

Unutmayın tipik elektronik tablolar, genellikle, ya yönelik kesinlik o kadar çok basamak gerektirmez finansal veriler için kullanılmaktadır "ya olursa" hassas bir süper-yüksek düzeyde gerekli değildir senaryolar, çeşitli modelleme. Kesinlikle başka araçlar var (ve muhtemelen diğer elektronik tablo programları, ancak son zamanlarda aramadım), varsayılan olarak veya özel yapılandırma ayarlarının daha büyük bir sayısal format kullanabileceğini, ancak Excel'in bunlardan biri olmadığını söyleyebilirim.

LibreOffice'in bunu daha iyi ele aldığını belirtenler için, aldatıcı olabilir. Daha fazla ayrıntı için bu yazıya bakın. Görünüşe göre LibreOffice, büyük sayıları biraz farklı şekilde ele alıyor, ancak aynı temel 64-bit kayan nokta gösterimi ile benzer problemlere sahip.


3
Bu cevap, OP'nin örneğindeki 11111.09482 gibi, ondalık sayılarla bazı sayıların tam olarak girildiği gibi gösterildiğinin gözlemini açıklarsa daha iyi olurdu.
andrew,

11
Sadece eğlence için: IEEE 754’te olduğu gibi , yani tam 22222.09482olarak olduğu gibi saklanır . 1.0101101100111000011000010001100001111110011111000000₂ * 2₁₀^(10000001101₂ - 1023₁₀)1.35632902954101553 * 2^1422222.0948199999984353787904
YoYoYonnY

1
Binary64 (çift duyarlık) , on basamaklı bir sayı için fazlasıyla yeterlidir. Tabii ki tam olarak temsil edilemiyor, ancak çoğu sayılar da dahil olmak üzere 0.2ve 0.1tam olarak temsil edilemiyor (fraksiyon 1/5 (beşte birini) ikili genişleme tekrarlanan sonsuz vardır). Ancak, Excel işleri kafa karıştırıcı bir şekilde gösterir.
Jeppe Stig Nielsen,

2
"Genelde elektronik tabloların genellikle çok fazla hassasiyet gerektirmeyen finansal veriler için kullanıldığını unutmayın" - bu genellikle çok yanlıştır - finansal veriler "yazdığınızın orada kalacağını umduğumda" kesin davranış gerektirir ", Ondalık / ikili dönüşüm vb. Konusunda haklısınız, ancak bu belirli argüman geçersiz! Finansal veriler için genellikle ondalık depolama formatı kullanan bir tür format Moneyveya BigIntegerformat kullanırız .
Honza Zidek

4
Bu cevap ne olduğunu açıklamak için yeterli değil. Sayının yanlış biçimlendirildiği Excel'de bir hata gözlemliyoruz . 22222.09482 ve 22222.0948199999 farklı ikili64 sayılarıdır.
Ruslan

11

Hesaplamaları yaparken, Excel'in kullandığı sayılar için iyi bir dahili ikili gösterim bulması gerekir. Sizin durumunuzda, kayan nokta sayısı kullanıyor ve aslına bakılırsa, bu veri formatı numaranız için (çok iyi) bir yaklaşıma sahip ancak tam eşleşme yok. Bu nedenle, Excel'e hangi çıktı biçiminin kullanılacağını açıkça belirtmezseniz, dahili olarak hesaplanan değere daha yakın olan ancak tam olarak girdiğiniz metin olmayan bir çıktıyla sonuçlanan "en iyi çaba" olur.

Bunu açıklığa kavuşturmak için: Girdiğiniz metnin bir sayıyı temsil ettiğini ve sayı dizisini sayıya dönüştürmenin zaten yukarıdan "hesaplama" tanımını yerine getirdiğini anlamak.

DÜZENLE

64 bitlik kayan nokta gösterimi kullanmanın aslında iyi bir seçim olduğunu düşündüğümü yeterince netleştirmedim: Excel, ondalık sayıdan sonra 11. basamakta bir yuvarlama hatası meydana geldiğinde, Bilim Adamları için bir araç olarak kullanılmıyor büyük bir etki, ancak muhasebeciler işlem hızlarının milyonlarca faktör tarafından düşürülmesini istemiyorlar ve bu sayede asla kullanmadıkları sayılarla kendini gösterebilecek bir yanlış hesaplama kaynağı yerleştiriliyor.

Ne için tasarlandığı bir elektronik tablo programı kullanıyorsanız ve bu etkilerin hiçbir zaman görünür alana girmemesini sağlamak için açık çıktı biçimlendirmesi kullanıyorsanız, iyi olacaksınız.


1
Yorumlar genişletilmiş tartışmalar için değildir; bu konuşma sohbete taşındı .
DavidPostill

1
Bu cevap ne olduğunu açıklamak için yeterli değil. Sayının yanlış biçimlendirildiği Excel'de bir hata gözlemliyoruz. 22222.09482 ve 22222.0948199999 farklı ikili64 sayılarıdır.
Ruslan

2

11111.09482 ve 66666.09482, 77777.09482 .. 99999.09482'ye kadar girdiğimde doğru gösteriyorlar. Bunun yuvarlama ile ilgili olduğundan emin değilim? Herhangi bir yuvarlama profili oluşturmadım. Sorunu çözmeme yardım eder misiniz?

Bazı numaralar doğru gösterilebilir, bazıları olamaz.

Görüntülenen hassasiyeti hesaplamalarınız için uygun şekilde ayarlayın ve round () işlevini kullanın.

  • Açıklama:

  • Çözüm:

    Verilerinize bir sayı biçimi uygulamadan önce Kayan Nokta yuvarlama hatalarının işinizi etkilemesini Sıklıkla görüntülenen gibi seçeneğini ayarlayarak ayarlayabilirsiniz. Bu seçenek, çalışma sayfasındaki her sayının değerini çalışma sayfasında görüntülenen hassasiyette olmaya zorlar.

    1. Dosya> Seçenekler'i tıklayın.
      Excel 2007'de: Microsoft Office Düğmesi'ne düğme resmi tıklayın ve ardından Excel Seçenekleri'ne tıklayın.
      Düğme resmi

    2. Gelişmiş'i tıklatın ve sonra Bu çalışma kitabını hesaplarken altında Hassaslığı gösterildiği gibi ayarla onay kutusunu seçin ve ardından Tamam'ı tıklatın.

    3. Tamam'ı tıklayın.

    4. Çalışma sayfasında, biçimlendirmek istediğiniz hücreleri seçin.

    5. Giriş sekmesinde, Sayı'nın yanındaki İletişim Kutusu Başlatıcısı Düğmesi görüntüsünü tıklatın.
      Başlatıcı Düğme Resmi
      Excel Şerit Görüntüsü

    6. Kategori kutusunda, sayı'yı tıklatın.

    7. Ondalık basamaklar kutusunda, görüntülemek istediğiniz ondalık basamak sayısını girin.

    İpucu: Kayan nokta aritmetik depolama yanlışlığının etkilerini en aza indirmek için, ROUND işlevini, sayıları hesaplamalarınız için gereken ondalık basamak sayısına yuvarlamak için de kullanabilirsiniz.

  • Muhasebe Dergisi - " Excel'in hesaplama hatalarıyla tıkandı ":

    Bazı tek sayılar yinelenen ikili ondalık sayıları oluşturur ve yinelenen haneler 15 yerden sonra kesildiğinde, ikili sayı hedeflenen sayısal değere tam olarak geri dönmez. Örnek olarak, Excel'in tüm sürümlerinde, 22.26 - 21.29 formülünün 0.97 vermesi gerekir, ancak bunun yerine 0.97000000000000002 vermesi gerekir. Deneyin ve sütun genişliğinizi ve ondalık basamaklarınızı arttırmayı ve hesaplama problemini görmeyi unutmayın.

    Bu tür hatalar tipik olarak önemsiz veya önemsiz olarak kabul edilir, çünkü nadiren anlamlı hesaplama hatalarıyla karşılaşırlar; Bununla birlikte, potansiyel kayan ondalık sayı hatalarını ortadan kaldırmak için alabileceğiniz iki önlem:

    1. ROUND işlevi. Hesaplanan değerlerinizi istenen ondalık basamağa yuvarlamak için Excel'in YUVARLA işlevini kullanın, böylece 15 basamaklı anormallikler olasılığı ortadan kalkar. Örneğin, = ROUND (-21.29 + 22.26,2) formülü doğru olarak 0.97 verir.

    2. Hassas. Tüm formülleri görünür basamaklara dayanarak hesaplanan değerleri kesmeye ve yuvarlamaya zorlamak için Excel'in Hassasiyetini Görüntülendi olarak açabilirsiniz.

    Bu seçeneği Excel 2013, 2010 ve 2007'de açmak için, Dosya (veya Office Orb), Seçenekler'i (veya Excel Seçenekleri), Gelişmiş'i ve Bu çalışma kitabını hesaplarken bölümünde, Kesinliği gösterildiği gibi ayarla kutusunu işaretleyin ve sonra Tamam'ı tıklayın.

    Excel 2003, 2002 ve 2000'de, Araçlar menüsünden Seçenekler'i seçin ve Hesaplama sekmesinde, Çalışma Kitabı seçenekleri altında, Gösterildiği gibi Hassas kutusunu işaretleyin ve ardından Tamam'ı tıklatın.


1
Açıklama önemli değil: Beklenen ve elde edilen sayılar arasındaki fark 28 ULP - doğal gidiş dönüş hatası için çok fazla. “Çözüm” sadece gerçek bir hatayı gizliyor.
Ruslan

Cevabınızı destekleyen birkaç bağlantıyla birlikte yorum yapmak yerine kendi cevabınızı gönderebilirsiniz. Bu şekilde, kullanıcı 954171'in dikkatini çeker ve insanlar buna oy verebilir. Hata Raporuna bir link verebilir misiniz?
Rob,

Bütün ilgili matematiksel detayların cevabı zaten var . Bu konuda herhangi bir hata raporu Dunno.
Ruslan

0

Bildiğiniz gibi, bilgisayarlar dahili olarak yalnızca sıfırlar ve olanlar (aka bitler) kullanarak çalışır ve bir değeri temsil etmek için sabit bir bit sayısına sahiptir (bugünlerde genellikle 64 bit). Bu, gösterilebilecek farklı değerlerin sayısının 64 ile 2 arasında bir güç olduğu anlamına gelir. Bu çok büyük bir rakam, elbette, ancak olası değerlerin sayısı sonludur, bu nedenle tüm sayılar gösterilemez. Buna tam olarak temsil edemez bir numara karşılaştığında, otomatik olarak o en yakın olana yerini alır yapabilirsiniz temsil eder. Gördüğün budur.


Sayı tabanı dönüşümü nedeniyle mi yoksa değer başına sınırlı bellek miktarı yüzünden mi? Her iki durumda da, muhakemeniz yanlış. Teknik olarak, sonsuz hafıza varsayarak, keyfi hassasiyet ve keyfi uzunluk numaralarına sahip olmak mükemmel bir şekilde mümkün. Örnek vermek gerekirse, GNU bignum var. Ayrıca, sayıları kayıplı bir formatta kodlamaya gerek yoktur. Yani ne bilgisayar bilimi, ne de hatalı sayılardır. Yalnızca, kullanıcı girişi kayıp olan bir sayı kodlaması seçen Excel geliştiricileridir.
phresnel

-1

Bilgisayarlar matematiğini ikili olarak yaparlar ve neredeyse her zaman tam sayı olmayan değerler için kayan nokta kullanırlar. Kesinleşme noktasında kesin olarak gösterilebilecek tek kesirli değerler, 2 (1/2, 1/4, 1/8, 1/16, 1/32, ...) sonlu kesirli güçlerin bir kombinasyonunun toplamı olmalıdır tasarlanmış hassasiyet sınırında (genellikle 53 bit) Bu değerler her zaman ondalık basamakta düzenli ve kesin bir gösterime sahip olmaz ve tam tersine, tam olarak ondalık basamakta gösterebileceğiniz tüm kesirli değerlerin ikili olarak tam gösterimi olmaz. Örneğin: 0,1. Sonsuza dek sürmeyen 2'lik kesirli güçlerin toplamı olarak temsil edilemez.

E-tablonuza ondalık bir değer girdiğinizde, bu ikiliye dönüştürülür ve saklanır ve açıkladığınız gibi, ikili olarak temsil edilebilecek en yakın yaklaşım haline gelir. Görüntülendiğinde, tekrar girilene geri dönmeyecek şekilde, yaklaşık olarak tekrar gerektiren bir onayıma dönüştürülür.

Neden 53 bit (ver veya al)? Çünkü "çift duyarlıklı" kayan noktaların depolanmasına yönelik tipik standart, bir mantis (ayrıca anlamlı olarak da adlandırılır), bir işaret göstergesi ve bir üs olan, 64 bit kullanır. Üste genellikle 10 bit tahsis edilir, işaret bir tane alır ve mantis için 53 bırakır. Bu depolama içindir. Hesaplamalar genellikle 80 bit kullanılarak yapılır ve geriye yuvarlanır.

Bilgisayarların 10 tabanında çalışacağı durumlar vardır, özellikle de yuvarlama ürünlerinin kabul edilemez olduğu parasal değerlerle çalışırken.


2
Bir battaniyeye katılmıyorum Tüm bilgisayarların ifadesi. Kuşkusuz, artık müze parçaları dışında aktif olarak kullanılmayan, depolama ve hesaplamalar için ondalık sayı biçimlerini kullanan birçok bilgisayar vardı. BCD - İkili Kodlu Ondalık da vardır - Intel CPU'larda sınırlı kullanım dahil olmak üzere birçok yeni CPU'da kullanılır. Bunların hiçbiri eldeki soru ile ilgili değil - Microsoft Excel tarafından sayıları depolamak için kullanılan, hepsi ikili olan yöntem. Ancak "Tüm bilgisayarlar" doğru değil.
manassehkatz-Reinstate Monica

"Tüm bilgisayarlar" dan "Bilgisayarlar" a geçişi görüyorum - "Neredeyse tüm bilgisayarlar" ya da "En modern bilgisayarlar" ya da onun gibi bir şeyle giderdim. Biliyorum - seçici biriyim. Ama bilgisayarlar da öyle :-)
manassehkatz-Reinstate Monica

@ manassehkatz Tüm dijital bilgisayarlar temelde ikilidir. BCD, ondalık aritmetik işlemlerini kolaylaştırmak için sadece ikili tabanın 10 yapısına sahiptir.
Zenilogix

Tüm dijital bilgisayarlar temelde ikili olsa da, ilk günlerde, ondalık tabanlı olan bir kaç tane vardı. Ancak, BCD'nin temelde ondalık aritmetik işlemeyi kolaylaştırmak için ikili tablonun 10 tabanlı bir yapı olduğuna katılıyorum.
manassehkatz-Reinstate Monica

Bu cevap sanki bilgisayar hatası gibi geliyor. Ama öyle değil. Kağıda tam olarak yazabildiğiniz herhangi bir sayıyı temsil edebilirsiniz (örneğin kesir olarak saklanırken tam olarak 1/3'ü temsil etmek kolaydır). Gerçekten de, Excel yazarlarının sayıları temsil etmek için hangi gösterimi seçtiği ile ilgili.
phresnel

-1

Yukarıdakilerin çoğunun söylediği gibi, bu bir içsel temsil hatasıdır. Excel, 64 bit kayar nokta sayıları için çift duyarlıklı bir seçim yapmıştır. Bu size 2 64 olası değer verir . Gerçek sayılar alanı, değerlerin sonsuzluğunu içerir, bu nedenle Excel tarafından temsil edilemeyen birini kullanmaya çalıştığınızda, temsil edilebilecek en yakın değeri kullanır.

Sınırsız hafıza verildiğinde, herhangi bir gerçek sayının temsil edilebileceğini söyleyen yorumları gördüm. Doğru, ama "sonsuz hafıza" diye bir şey yoktur, bu yüzden bu çok tartışmalı bir nokta. Diğerleri Excel'in daha büyük dahili gösterimler kullanabileceğini belirtmiştir, örneğin 128 bit. Doğru, ancak, bilgisayarların işlemcinin veriyolu boyutuyla eşleşen bit sayısıyla temsil edilen sayılar üzerinde matematiksel işlemler yaparken daha iyi olduğu ortaya çıktı. Bu yüzden 32 bitlik bir bilgisayar 32 bitlik sayılardaki matematiksel işlemlerde en hızlı olacak ve 64 bitlik bir bilgisayar 64 bitlik sayılardaki matematiksel işlemlerde en hızlı olacaktır. Eğer ve ne zaman 128 bitlik bir bilgisayar olacaksa, Excel'in 128 bitlik sayı sunumuna geçmesini bekleyebiliriz. Bu hala temsil edilebilecek çok büyük ama sınırlı sayıda sayı sağlayacaktır.

Endişeniz, sayıların elektronik tabloda nasıl göründüğü ile ilgiliyse, belirli bir kesinliğin (ondalık sayısı) kullanılması size tutarlı sonuçlar verecektir. Endişelendiğiniz, yazdığınız numara ile Excel tarafından kaydedilen gerçek numara arasındaki farktan ibaretse, endişelisiniz. Fark gerçektir ve hata yaptığınız tüm hesaplamalar boyunca gerçekleştirilecektir. Korkarım bu hataya kapıldın. Bu, Excel'in bir kısıtlamasıdır, bazıları belirtildiği gibi bir hata değildir. Yakında herhangi bir zamanda değişmesi muhtemel değildir, bu nedenle sizin için kabul edilebilir değilse, sayıları daha yüksek hassasiyetle temsil edebilecek başka bir elektronik tablo uygulaması aramanızı öneririm. Ancak, böyle bir uygulama bulursanız sınırlamanın hala orada olduğunu unutmayın. Sadece farklı olan hatanın boyutu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.