Python Float Veri Toplama-Çıkartma Problemi
-
Proses , Algoritma vb. konulara yoğun ilgim olsada yazılım konusunda kafa patlatarak sıfırdan bir dili öğrenmişliğim yoktur. Scriptkiddie bir geçmişten geliyorum.Python öğrenmeye niyet ettim bu aralar.
En basit şey bile olsa kafama takılan soruları buraya taşıyacağım yardımcı olan müridler olursa ne ala. Olmazsa zaten benim konuları bilen biliyor cevapları bi şekild bulup (gerek kendi çabam , gerek müridlerin yönlendirmesi) konuya taşıyorum.
-0-
Şimdi soruya geçelim Pythonda daha en baştayım. interactive shell üzerinde toplama çıkarma falan yapıyorum. Float verileri toplarken aşağıdaki tarzda bir çıktı aldım.
4.3 , 4.7 , 5.3 , 5.7 , -0.1 , 1.7 , -0.1 değerlerini almam gerekirken niye yukarıdaki değerleri aldım ? Bu sonuçların çıkmasının mantığı nedir ? -
-
-
https://docs.python.org/2/tutorial/floatingpoint.html
Floating-point numbers are represented in computer hardware as base 2 (binary) fractions.
...
Unfortunately, most decimal fractions cannot be represented exactly as binary fractions
Bundan dolayi oyle oluyor.
-
Anladım hocam sağolasın. Veri tipleri ve bu verilerin hafızada tutuluşu üzerine ek okumalar yapıp konuyu temellendirmek lazım. Aşağıdaki iki yazı tam olarak yeterli olmamakla birlikte genel olarak anlatıyor.
http://yazilimyeni.blogspot.com/2012/01/say-sistemleri.html
http://bilgisayarkavramlari.sadievrenseker.com/2011/04/01/ondalikli-sayilarin-taban-donusumleri/
İlerleyen aşamalarda hesap makinesi programı yaparken daha derinlemesine girerim bu konulara. Malum bilgisayar bunu bu şekilde versede hiçbir hesap makinesinde sonuç böyle küsüratlı gelmiyor =) -
Küsüratlı bir sayıyı küsüratsız olarak almak istiyorsan şu yöntemi uygulayabilirsin hocam.
print (round((1/3),1))
#virgülden sonraki 1 sayısı küsüratın kaç haneli olması gerektiğini gösterir. Küsüratsız sonuç istiyorsanız virgülü ve 1'i silebilirsiniz.