Arkadaşlar merhabalar:
Yukarıdaki kodda (16.2000000003) üç nerden geliyor. Cevabı 16.2 olması gerekmiyor mu?
Floating point durumları:
https://forum.yazbel.com/t/acemiden-kafa-karistiran-bir-soru-sizler-icin-kafa-karistirmayabilir/6452
https://forum.yazbel.com/t/kayan-noktali-sayilar-hakkinda/4412
Basit cevap: Hafiza alani sinirli oldugu icin kusurlu sayilarin degerlerini yaklasik olarak tutuyoruz.
Merhaba, aslında @anon18277073 hocamız sayesinde sana cevap yazabiliyorum. Hocamızın attığı linklere bakarsanız anlaşılır ama bir de ben üzerinden geçmek istiyorum. Çünkü amacım hem anlattığım yanlış yerler varsa bunları öğrenmek ve de aynı zamanda birine yardımcı olmak. Ben şimdi bir arkadaşıma yazdığım cevabı atıyorum buraya.
floatlar ile çalışırken bazı problemler oluyor. Şöyle ki:
1/3
0.3333333333…
Ama sen bunu bilgisayarda atıyorum ancak
0.333333 olarak depolayabilirsin. Çünkü bilgisayar hafızası sonlu, ama 33333… bölümü sonsuz.
Şimdi bilgisayar, sayıları 10’luk sisteme göre değil, 2’lik sisteme göre depolar.
Biliyor musun, bilgisayar programlarında
0.1 + 0.2 ≠ 0.3
Nedenini birazdan açıklayacam.
Binary(ikilik) sayı sisteminde ondalıklı sayılar şu şekilde temsil edilir.
1.2³ + 0.2² + 1.2¹ + 0.2^0 + 1.2^-1 + 0.2^-2 + 1.2^-3
Şimdi bu binary sayının ondalıklı gösterimini yapalım ve bunu ondalıklı sayı sistemine göre değerini bulalım.(yukarıda zaten bulduk, yazdığım 2^n li sayıları topla al sana ondalıklı gösterim.
(1010,101)2 = (10,625)10
Şimdi bunu anladıysan sıra onluk sistemde 0.1 olan sayının neden binary sistemde devirli olduğunu gösterecem. Bunun için sana bir foto atıyorum.
Biz günlük hayatta onluk sistemde düşünürüz ama bilgisayar ikilik sisteme göre iş yapar.
Bu devredenli binary sayı, hafızada eksik depolanır
Bu yüzden de hata payları olur.
Arkadaşıma yazdığım cevap dogrusuyla yanlışıyla buydu. Tabi mantissa, exponent gibi konulara hâkim değilim, bu yüzden beni mazur görünüz. Ben olayı bu şekilde anladım.
Emeği geçen herkese teşekkürler.
Noktadan sonra maksimum 16 basamak galiba, ondan.