Bilmek istediğin her şeye ulaş

C# üzerindeki çalışmalarımda string to float çevirilerde 0000008 bir hata payı oluşuyor? Bu sorunun kaynağı nedir?

2,3 olarak girilen değer 2.99999998 gibi bir değere dönüşüyor.Düzenle
Double kullan. Float'ın hassasiyetine göre bu değerler normal:
1/3 float olarak 0.3333333
double olarak: 0.333333333333333
decimal olarak: 0.3333333333333333333333333333
  • Paylaş
3

Birkan Aydin, Bu hassasiyet hangi faktörlerden dolayı kaynaklanıyor. Float point problem dedikleri bu mudur ?

Ceyhun Çakar, Bu hassasiyet bilgisayarların dijital olmasından kaynaklanıyor. Dijital basitçe rakamsal demek ve bilgisayarın içinde her şey ikilik düzendeki tamsayılardır. Tüm matematiksel işlemlerde tamsayılar için tanımlanmıştır. Bilgisayar ondalıklı sayıyı iki tamsayının bileşkesi olarak ikilik düzende tutar. 31,4 sayısını 0.314x10^2 olarak tutarsak bilgisayarda bu sayı (314 ve 2) olarak tutulur. Float sayılar için toplamda 32-bit kullanılır. Ekrana yazdırdığınız zaman ondalık sayı hesaplanır. Float iki tamsayı için toplam 32-bit ayırır. Dönüşümü yaptığınız zaman bahsedilen kaybı görebilirsiniz.

Birkan Aydin, Ceyhun Bey, bir ara izmire gelirseniz elinizden su içmek istiyorum :) cevabınız için teşekkürler.