Bilim / Mühendislikte kayan nokta sayıları neden sıklıkla kullanılıyor?


33

Kayan nokta sayılarının doğruluğunu araştırırken, birkaç yerde buna benzer bir ifade gördüm.

" Float ve double edilmektedir ( için tasarlanmış / genellikle kullanılan ) mühendislik ve bilimsel hesaplama "

Anladığım kadarıyla, yüzen ve iki katların gücü, (iyi ama mükemmel değil) hassasiyeti için kullandıkları bellek miktarıdır.

Neredeyse bu cevaptan bir anlayış alıyorum gibi hissediyorum

"kayan nokta sayıları sürekli miktarları modellemenizi sağlar"

Hala anladığımdan emin değilim. Mühendislik ve Fen bilimleri , hesaplamalarımdan kesin sonuçlar almak istediğiniz alanlara benziyor , benim anladığım kadarıyla kayan noktaların vermediği. Ayrıca "sürekli bir nicelik" in ne olduğunu tam olarak takip ettiğimden de emin değilim.

Birisi bu açıklamayı genişletebilir ve belki bir örnek verebilir mi?



47
Engineering and Science both sound like fields where you would want precise results from your calculations, which, from my understanding, floating points do not give.Hem Bilim hem de Mühendislik'te yalnızca belirli bir noktaya kadar hassasiyeti önemsiyorsunuz. Her hesaplama için sonsuz hassasiyet kullanmak, genellikle gereksiz yere pahalıdır. Değişken noktayı sabit noktadan ayıran şey, belirli sayıda ondalık basamağa bağlı kalmanıza gerek kalmamasıdır - çok fazla ondalık basamağa sahip küçük miktarlara veya sınırlı hassasiyetle gerçekten büyük miktarlara sahip olabilirsiniz.
Doval,

24
Yukarıda belirtilen noktalara eklemek için, yalnızca belirli bir noktanın ötesindeki hassasiyeti önemsemezsiniz, aynı zamanda keyfi bir şekilde kesin sonuçlar elde edemezsiniz , çünkü girdilerinizin çoğu bazı doğal hatalara sahip olan miktarlar ölçülür.

2
Ayrıca, yuvarlama hatalarının da birikmeye devam edeceği verilen bir şey olmadığı belirtiliyor. Bu ne yaptığınıza ve nasıl yaptığınıza bağlıdır; buna adanmış bütün bir alan var.
Doval,

10
Kayan nokta "rastgele kesinlik" değildir, çeşitli işlemler için hatalar tahmin edilebilir ve iyi bilinir ve bir algoritma için hatalar çözülebilir. Yeterince düşükse (ve özellikle de geriye dönük hatalarınız girdi değişkenlerinizdeki belirsizliklerden daha küçükse), sonuçlarınızın iyi olduğundan emin olabilirsiniz (veya en azından onlarla ilgili herhangi bir sorunun yüzmekten kaynaklanmadığından) nokta hatası).
Hobs

Yanıtlar:


77

Bilim ve mühendislikteki hesaplama, hassasiyet, aralık ve hızda tradeofflar gerektirir. Sabit nokta aritmetiği hassasiyet ve uygun hız sağlar, ancak aralığı feda eder. BigNum, isteğe bağlı hassas kütüphaneler, menzil ve hassasiyette kazanır, ancak hız kaybetmez.

Meselenin özü, çoğu bilimsel ve mühendislik hesaplamalarının yüksek hıza ve çok geniş bir aralığa ihtiyaç duyması, ancak hassasiyet için nispeten mütevazı ihtiyaçlara sahip olmasıdır. En iyi belirlenmiş fiziksel sabit sadece yaklaşık 13 hane tarafından bilinir ve birçok değer çok daha az kesin olarak bilinir. Bilgisayarda 13 basamaktan daha fazla hassasiyet olması buna yardımcı olmaz. Merhemdeki sinek, kayan nokta işlemlerinin dizilerinin kademeli olarak hassasiyet kaybedebileceğidir. Sayısal analizin ekmeği ve tereyağı, hangi problemlerin buna özellikle duyarlı olduğunu ve sorunu azaltmak için operasyonların sırasını yeniden düzenlemenin zekice yollarını buluyor.

Bunun bir istisnası, matematikte, milyonlarca basamaklı ancak mutlak hassasiyetle sayılar üzerinde aritmetik işlemler gerçekleştirmesi gereken sayı teorisidir. Sayısal sayı teorisyenleri genellikle BigNum kütüphanelerini kullanır ve uzun zaman alan hesaplamalarına katılırlar.


2
İyi cevap. Altta yatan fonksiyonlar tam anlamıyla kusursuz olsa da, tam olarak modellenmesi için kusursuz bir hassasiyet gerektirecek olsa da, gerçek şu ki bilim ve mühendislikteki her şey bir yaklaşımdır. İyi ve faydalı yaklaşımlara sahip olmayı ve sonsuz bir hassasiyetten daha fazlasını başarmayı tercih ettik.
Jonathan Eunice

4
@JonathanEunice Gerçeği tam olarak modelleyemezsiniz. Modelin girişi ölçümlerden gelir ve muhtemelen bir şeyleri asla ölçemezsiniz; öyle ki, modern bilgisayar / yazılımdaki yerel bir gerçek sayı (o sırada) onu sınırlayacaktır. Başka bir deyişle, mükemmel bir model, yazılım veya matematiksel olabilir, önemli değil. Örneğin bir kutunun hacmini hesapla. a*b*ckolay şeyler, ancak kesinlikle kesin bir şekilde yapamayacağınız ölçüleri ölçmeniz gerekiyor, bu nedenle ölçüm hatası ile sınırlandırılacak yeterlikte herhangi bir şekilde sonsuz bir kesinliğe ihtiyacınız yok.
luk32,

2
@ luk32 Bu noktaların çoğuna şiddetle karşı çıkıyoruz. Kişi bir şeyi tam olarak modelleyebilir (örneğin bir kürenin hacmi), ancak asla tam olarak ölçülemez. Ve gerçeklik asla mükemmel bir modele mükemmel uymuyor. Kusursuz ölçümler veya hesaplamalar için beklemekten biraz daha kesin, kullanışlı değerler / modeller elde etmek daha iyidir - her zaman bir adım ötede olacak bir şey.
Jonathan Eunice

2
“Meselenin özü, çoğu bilimsel ve mühendislik hesaplamalarının yüksek hıza ve çok geniş bir aralığa ihtiyaç duymasıdır” Size uzun zaman verirseniz, hala tam olarak hesaplayamazsınız çünkü tam olarak hesaplanacak algoritmalar tam olarak bilinmemektedir. Ve her şeyden önce sayıları tam olarak temsil edemiyoruz. Bu sadece ne hızlı ve ne yavaş çözeceğimizi bilmediğimiz bir problem.
Michael Le Barbier Grünewald

@ MichaelGrünewald, gerçek sayıları tam olarak temsil edemiyoruz, ancak birkaç bin metre yüksekliğinde yapılar inşa edebildiğimiz, DNA'daki genleri tanımlayabildiğimiz ve iki yıl sonra bir kuyruklu yıldızla uydu uydurabileceğimiz bir yaklaşıma kadar sorunları çözebiliyoruz. boşlukta. Randy Newman'ın deyişiyle, bu kesin olmayabilir, ama sorun değil. Aslında, rasgele hassas kütüphaneler kullanarak (hafızanın sınırlamalarına tabi) rasyonelleri temsil edebiliriz.
Charles E. Grant,

30

Hangi alternatifi önerirsiniz?

Sürekli sayılar matematikte gerçek sayılar kullanılarak temsil edilir. Mümkün olan her gerçek sayıyı kodlayabilecek bir veri türü yoktur (çünkü gerçekler hesaplanamaz), yani bu sadece en çok ilgilendiğimiz gerçek sayıların alt kümesini seçebileceğimiz anlamına gelir.

  • Bilgisayar cebir sistemlerinin (CAS) yaptıklarına benzer tüm hesaplanabilir gerçekleri seçebilirsiniz. Sorun şu ki, ifade ağacınız büyüdükçe büyüdükçe hızlıca olanaksız hale gelmesi. Aynı zamanda çok yavaş: Mathematica'daki devasa bir diferansiyel denklem sistemini sembolik olarak çözmeye çalışın ve diğer bazı kayan nokta tabanlı uygulamalarla karşılaştırın ve hızda çarpıcı bir fark göreceksiniz. Ek olarak, Jörg W Mittag ve kasperd'ın belirttiği gibi: karar verebilecek eşitlik / karşılaştırma işlemleriniz bile yok.

  • Kesin rasyonel sayılar kullanabilirsiniz, ancak bu birçok uygulama için gerçekten işe yaramaz çünkü karekök veya kosinüs veya logaritma vb. ve üzerinde daha fazla hesaplama yaptıkça işlem yapma zamanı.

  • İsteğe bağlı hassas ondalık sayılar da kullanabilirsiniz, ancak sınırsız sayıda basamak elde ettiğiniz için bölme kadar basit bir şey bile işe yaramaz. Ayrıca, daha az oranda rasyonel sayılarla daha benzer şekilde performans sergiledikçe karmaşıklığı artırma konusuna da bakabilirsiniz.

Bu yüzden, bir noktada yaklaşıkları kullanmaya zorlanacaksınız, bu durumda tam olarak kayan nokta sayılarının en iyi yaptığı yer burasıdır. Kayan nokta sayıları da sabit genişliktedir (daha önce bahsedilen diğer 3 veri türünün aksine), bunlar üzerinde daha fazla hesaplama yaparken karmaşıklığın artmasını önler.


1
En iyi cevaplardan biri benimkini yazmadan önce göz ardı ettim.
Michael Le Barbier Grünewald

8
Artı, iki hesaplanabilir gerçekin eşit olup olmadığını bile söyleyemeyeceğiniz biraz sakıncalı bir gerçek var.
Jörg W Mittag

1
Tüm hesaplanabilir gerçekleri kullanmak karşılaştırmalarda sorun yaşar mıydı? Durma problemini çözmeden keyfi hesaplanabilir gerçekleri karşılaştıramayacağınıza eminim.
kasperd

@ kasperd: Bunun bir hesaplamada hangi işlemlerin kullanılmasına izin verildiğine bağlı olduğunu düşünüyorum, ancak birinin ne kadar zengin olabileceğinden emin değilim, ancak herhangi bir iki rasgele sonucun olabileceğini garanti ediyorum. sınırlı sayıda işlemle üretilen sınırlı zaman içinde karşılaştırılabilir. Cebirsel tipler neredeyse kesinlikle bu kriteri karşılar, ancak ln (x) ve exp (x) fonksiyonlarının eklenip eklenmeyeceğini ve hala yerine getirilip getirilmediğini bilmiyorum.
Supercat

Sürekli kesirler kullanarak rasgele hassas aritmetik (toplama, çarpma, çıkarma, bölme), irrasyonel ((2 gibi), iyi bilinen aşkın (Pi ve e gibi), trig fonksiyonları, vb. Destekleyebilirsiniz. HAKMEM’de Gosper’ın algoritmasına bakınız. Tamamlandığında, istenen kesinlikte bir kayan nokta yaklaşımı elde etmek için tembel değerlendirme yapabilirsiniz.
Paul Chernoch

14

Bilim hakkındaki öneriniz yanlıştır, Matematik ve Mühendislik dışındaki Bilim, daha kesin sonuçlarla çalışmaz. Gösterdiğiniz kaç basamakta yerleşik olan hassas bir faktörle çalışırlar.

Burada anlamanız gereken anahtar terim: önemli rakamlar . Bir sayının önemli rakamları, hassasiyetine katkıda bulunan anlamı taşıyan rakamlardır.

Temel olarak, eğer bir şeyin 12 santimetre uzunluğunda olduğunu belirtirsem, aslında 11,5 ila 12,5 santimetre uzunluğunda bir yerde olabilir. Bununla birlikte, bir şeyin 12,00 santimetre uzunluğunda olduğunu belirtirsem, 11,995 ila 12,005 santimetre uzunluğunda bir yerde olabilir.

Bir örnek olarak, bir ölçüm bandı alıp oturma odanızı ölçerseniz. 25 metre genişliğinde 6 metre bulmuş olsanız bile, bant ölçümünüzün milimetre hassasiyetinde veya nano metre hassasiyetinde herhangi bir şey söyleyecek kadar doğru olmadığını biliyorsunuz.


@leftaroundabout hakkında ne demek matematik (matematikte olduğu gibi) bilim değildir? Benim kitabımda öyle.
Pieter B

2
@ PieterB: Matematik, Bilim değildir. Bu bir felsefe. Bilim, fiziksel dünyamız hakkında bir anlayış oluşturma eylemidir. Felsefe, fikirlerin ideal bir dünyada nasıl çalıştığını anlama eylemidir.
slebetman

Bence bilim genellikle anlamlı bir rakamdan ziyade açık bir güven aralığında çalışmayı tercih ediyor.
Taemyr

@slebetman Üstelik yazımdaki noktamla hiçbir ilgisi yok, matematik bir bilim ise ya da bir alıntı yapmam için yardımcı olamıyorsam: Doğa doğası gereği matematikseldir ve matematikte bizimle konuşur. Sadece dinlemek zorundayız. Doğa matematiksel olduğu için, doğayı tanımlamak isteyen herhangi bir bilim tamamen matematiğe bağlıdır. Bu noktayı fazla vurgulamak imkansızdır ve Carl Friedrich Gauss'un matematiği "bilimlerin kraliçesi" olarak adlandırmasının nedeni budur.
Pieter B

Bu alıntı buradan geliyor . İyi bir okuma ve tartışılacak çok şey var, ama burada değil, aslında yazınızla veya bu soruyla ilgisi yok.
leftaroundabout

7

Kayan nokta sayılarının temel olarak bilimsel ve mühendislik gösterimi ile aynı olduğuna , insanların matematik ve fen bilimlerine sayıları yazmanın standart yoluna dikkat edin. Bu alanlarda, aşırı hassasiyet için büyük bir ihtiyaç yoktur, ancak genellikle çok büyük bir aralık vardır.

Fizik ödevimden rastgele bir örnek almak için, son zamanlarda yaklaşık 9.11 * 10 ^ -31 kg olan bir elektronun kütlesiyle çalışmak zorunda kaldım. Hassasiyet umrumda değil; Tek umursadığım her şey 9.12 olabilir. Ama üstünü önemsiyorum ve 0.0000 ... 911 kg yazmak istemiyorum, bu yüzden bilimsel gösterimi kullanıyorum.

Benzer akıl yürütme, bilimsel ve mühendislik hesaplamalarında da geçerlidir: çok büyük bir aralık vardır, ancak çok büyük sayılarla depolamak ve çalışmak zorunda değiliz, bu nedenle normalleştirilmiş bir değeri ve çalışmak için daha küçük ve daha hızlı olan bir üsleri depolarız.


6

Kayan nokta sayıları ayrıca belirli bilimsel sonuç türlerini hesaplamak için kendilerini iyi ödünç veren çeşitli özelliklere sahiptir. En önemlisi, hassasiyet, bilimsel gösterimde olduğu gibi, büyüklükle ters orantılıdır, böylece hem sıfıra yakın küçük farkları hem de daha uzaktaki daha büyük farkları temsil edebilirsiniz.

Goldberg'in makalesi muhtemelen kayan noktalı sayıların özelliklerinin en ünlü analizidir (ve bu tür bir şeye önem veriyorsanız okunması gerekir), ancak Kahan'ın makaleleri , incelikli pek çok şeyin arkasındaki mantığı açıklamada daha iyi bir iş çıkardığını düşünüyorum. TASARIM SORUNLARI.

Özellikle, Kahan, Java'nın kayan nokta uygulamasından bahsettiğinde , oldukça iltihaplı olmasına rağmen, IEEE-754 anlambiliminin neden yararlı olduğu konusunda çok iyi noktalar ortaya koyuyor ve Much Ado About Nothing'un İşaret Bit'i , imzalı sıfıra ilişkin mantığını önemli ölçüde derinlemesine araştırıyor.


Kahan'ın makalesinin tamamını henüz okumamıştım, ama benden daha kibar görünüyor. Java, realdepolamak için üç yığın girdisi alacak ve makinenin doğal hesaplama hassasiyetini temsil edecek bir tür eklediğinde, gerçekte olduğundan daha kullanışlı ve daha hızlı olan sayısallara sahip olabilirdi ; Bu değer, 64 bitlik bir yüzer + 32 bitlik dolguyu dolduran bir 80 bitlik yüzer + 16 bit ya da işaret ve bayraklar [FPU olmayan uygulamalar için] için 64 bitlik bir uçurum + 16 bitlik ve 16 bitlik olarak depolanabilir.
supercat

Bunu floatve doubledepolama formatlarını belirtin ve realhesaplamalı formattır. FPU'suz birçok sistemde, bir mantis, üs ve kelime ve yarım kelime sınırları üzerindeki bayraklar ile çalışmak, her işlem için iki kat daha fazla paket açmak ve yeniden paketlemek zorunda kalmaktan daha hızlı olacaktır.
supercat

2

TL; DR Çoğu fonksiyonun kusursuz bir hassasiyetle nasıl hesaplanacağını bilmiyoruz, bu nedenle sayıları kusursuz bir şekilde temsil eden hiçbir nokta yoktur.

Şimdiye kadarki cevapların hepsi en önemli noktayı kaçırıyor: çoğu sayının tam değerini hesaplayamıyoruz. Önemli bir özel durum olarak, üstel fonksiyonun kesin değerlerini hesaplayamayız - yalnızca en önemli irrasyonel fonksiyondan alıntı yapmak için.

Naif soruya saf cevap

Sorunuz daha doğrusu “kesin aritmetik kütüphaneler var, neden onları kayan nokta aritmetik yerine kullanmıyoruz?” Gibi görünüyor. Cevap, kesin aritmetik rasyonel sayılar üzerinde işe yarıyor.

  • Archimede'nin sayısı - dant'nın bilgisel ismi - rasyonel değil.
  • Diğer birçok önemli sabit, rasyonel değildir.
  • Diğer birçok önemli sabitin rasyonel olduğu veya bilinmediği bile bilinmemektedir.
  • Herhangi bir sıfır olmayan rasyonel sayı x için exp (x) sayısı irrasyoneldir.
  • Benzer ifadeler, radikallere, logaritmalara ve bilim insanları için önemli olan fonksiyon zenginliğine de sahiptir (Gauss'un dağılımı, CDF'si, Bessel fonksiyonları, Euler fonksiyonları,…).

Rasyonel sayı çok şanslı bir kaza. Sayıların çoğu rasyonel değildir (bkz. Baire teoremi), sayılarla ilgili hesaplama her zaman bizi rasyonel dünyadan çıkarır.

Sayı hesaplamak ve göstermek nedir?

“Sorun, rasyonel sayıların gerçek sayıları temsil etmek için çok iyi bir seçim olmadığı” diyerek tepki verebiliriz. O zaman dilim çatalımız Debian'ı yuvarlıyoruz ve gerçek sayılar için yeni bir temsil sistemi geliştiriyoruz.

Eğer sayıları hesaplamak istiyorsak, gerçek sayılar için bir temsil sistemi seçmeli ve bunlar üzerindeki önemli işlemleri tanımlamalıyız - yani ne hesaplamanın ne anlama geldiğini tanımlamalıyız . Bilimsel bilgi işlem ile ilgilendiğimiz için, tüm ondalık sayıları (önlemlerimiz), onların bölümlerini (rasyonel sayıları), üstel fonksiyonların değerlerini ve Archimede'nin sayısı gibi bazı komik sabitleri doğru bir şekilde göstermek istiyoruz.

Sorun, böyle bir sistemde sayıları mükemmel şekilde temsil etmenin tek yolunun sembolik formu kullanmak, yani hiçbir şeyi hesaplamamak ve cebirsel ifadelerle çalışmaktır. Bu, gerçek sayıların sakat bir temsilidir, çünkü iki sayıyı (hangisi daha büyükse) güvenilir bir şekilde karşılaştıramayız? “Verilen sayı 0'a eşit mi?” Sorusuna kolayca cevap veremiyoruz.

Daha kesin matematiksel tanımlar ve problemler arıyorsanız, örneğin rasyonel sayılar, aşkın sayılar, en iyi yaklaşımlar ve Baire teoremini arayın.


Bence bu harika bir cevap, sadece bu soruya değil, bu nedenle, soracağınızın yaptığınız puanları anlayacağından emin değilim. Bu ve \ Real veya \ Complex sayılarının sonlu bir dijital gösterimle (dinamik veya statik bit genişliğinden bağımsız olarak) tam olarak gösterilememesiyle tamamen liberal oluyorsunuz. Bunların hepsi tamamen doğru, ama konunun dışında. Goldberg'e robotik müttefik atıfta bulunmadıkları için övgüler. :) Ve Baire teoremi, Programcılar veya StackOverflow'ta bulunan olağan söylemlerin bir parçası değildir.
mctylr

0

Çünkü

1) Yazarlar, "mühendislik ve bilimsel hesaplama" nın gerçek dünyadaki fiziksel büyüklükleri ölçtüğü varsayımlarında bulunurlar.

2) Fiziksel büyüklükler süreklidir ve tam olarak belirttiğiniz gibi "kayan nokta sayıları sürekli miktarları modellemenizi sağlar"

.. ve cevabımın geri kalanı Rufflewind tarafından güzelce özetlendi , bu yüzden bunu burada tekrarlamayacağım.


0

Kayan nokta sayıları göreceli doğruluk sağlar: Çok sayıdaki herhangi bir doğru sayıdan en küçük bir yüzdeye kadar olan sayıları (yüzde 0,000000000000100% gibi bir şey aramak istiyorsanız) temsil edebilir. Bu özelliği bir slayt kuralıyla paylaşırlar; ikincisi, 3 basamaklı doğruluk gibi bir şeyden daha iyi olamaz. Yine de, dijital bilgisayarlar bunun için normal hale gelmeden önce büyük yapıların statik ve dinamik kuvvetlerini çözmek oldukça yeterliydi ve bunun nedeni, malzeme sabitlerinin de bazı farklılıklar göstermesiydi ve malzeme ve inşaat farklılıklarına karşı makul derecede iyi huylu yapılar seçmek Maksimum yükü ve zayıf noktaları makul şekilde tanımlanabilir kılmak

Şimdi "doğruluk", fiziksel özelliklerin ölçümlerini ve / veya boyutlarını temsil eden birçok sayı için kullanışlı bir özelliktir.

Bilim / mühendislikteki her şey bu kategoriye ait değildir. Örneğin, hata düzeltme polinomlarını manipüle etmek için büyük sayıları veya Galois alanlarını çarpmak için sayı teorik dönüşümleri kullanıyorsanız, küçük bir hata diye bir şey yoktur: işlem sırasında herhangi bir tek bit hatası tamamen rastgele ayırt edilemeyen sonuçlara yol açacaktır gürültü, ses.

Bu alanlarda bile, eğer biri hataların birikimini izlerse ve kayan nokta hatalarının muhtemelen tek bir ucu bile çevirecek kadar büyüklük biriktirmediğinden emin olarak kayan nokta sayıları ile çalışabilir (konvolüsyon yapmak için karmaşık FFT'ler kullanmak gibi) onların yaklaştığı gerçek varlıklar. Bu tür yaklaşımlar için, sabit nokta işleme muhtemelen daha uygun olacaktır, ancak sahadaki kayan nokta birimleri daha hızlı çalışma ve daha fazla sayıda kullanılabilir bit sağlama eğilimindedir.

Ayrıca C veya Fortran gibi programlama dilleri, karışık hassas çarpma ve bölme veya toplama / çıkarma için bir taşıma biti gibi temel işlemlere erişmeyi şaşırtıcı bir şekilde zorlaştırmaktadır ve bunlar sınırlı hassasiyetli tamsayıların ötesine geçmek için temel yapı taşlarıdır.

Bu nedenle, işlemleri kayan nokta sayılarıyla eşleştirebiliyorsanız, bugünlerde emrinizde oldukça güçlü bir donanıma sahip olabilirsiniz ve algoritmalarınızı bugünün genel amaçlı programlama dillerinden birinde oldukça iyi bir şekilde belirleyebilirsiniz.


0

Bunun, hangi uygulama float/ doubleveri türlerine uygun olmadığını ele alarak cevaplanabileceğini düşünüyorum .

Bir sayıyı belirli bir sayı hanesiyle doğru şekilde temsil edebildiğinizden emin olmanız gerektiğinde, kayan nokta sayıları uygun değildir, çünkü sayıları nasıl temsil ettiğimiz gibi, 10 sayısının yerine 10 sayısını da temsil eder. gerçek dünya.

Bu nedenle, kayan nokta veri tiplerinin kullanılmaması gereken bir alan finans * ile ilgilidir. Örneğin bir bankanın çekirdek sistemi için, eğer 100000.01 $ 'lık bir tutarın aniden 100000.00 $ veya 100000.02 $ olması durumunda, kabul edilemez olacaktır.

Bu gibi bir sorun, float kullanırken, özellikle sayı bir veya daha fazla hesaplamanın sonucuysa, örneğin bir hesaptaki tüm işlemlerin toplamını hesaplarken kolayca ortaya çıkabilir.

Mühendislik ve bilimsel hesaplama, bu nispeten küçük yuvarlama hatalarının kabul edilebilir olduğu alanlardır. Kullanıcılar normalde tüm sayıların sınırlı bir kesinliğe sahip olduğunun farkındadır ve genellikle birçok önemli basamakla çalışırlar . Fakat en önemlisi, iyi tanımlanmış göreceli bir kesinliğe sahiptirler, yani hem çok büyük sayılar hem de çok küçük sayılar için aynı sayıda önemli basamak sağlarlar.

* Bir zamanlar floatdeğerleri temsil etmek için kullanılmış bir finansal uygulama üzerinde çalıştım ve bunun sonucunda da yuvarlama hataları ortaya çıktı. Neyse ki, bu belirli hata hiç kritik değildi, kullanıcılar programdaki hesaplama hataları hakkında şikayette bulundular. Bu da farklı, çok daha kötü bir etkiye yol açtı: kullanıcılar sisteme olan inancını kaybetmeye başladı.

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.