Bu yayınla C# programlama dilini temelinden anlatacağım eğitim setinin üçüncü dersini tamamlamış olduk. Bu video serisi, genellikle hafta sonları Youtube üzerinde yapacağımız canlı yayınlar ile devam edecek.
3. Ders İçeriği;
Nümerik tiplerde type inference
Nümerik suffix kavramı
Tam sayı çevrimler
Noktalı sayı çevrimleri
Decimal çevrimleri
Aritmetik operatörler
Tam sayılarda Overflow mantığı
checked – unchecked kavramları
8 bit ve 16 bit tam sayılar
NaN, pozitif ve negatif sonsuz ve -0
double ve decimal karşılaştırması
Ayrıca videonun sonunda karıştırdığım 0.1f + 0.2f == 0.3f kısmının neden true olduğunu anladım. Durum şuymuş; “bunun her zaman true olacağına dair bir kesinlik yok”. Bu durumda CPU (veya sistemin tamamı) bunun nasıl hesaplanacağına kendisi karar veriyor anladığım kadarıyla. (Şu Stack Overflow sorusuna göz atabilirsiniz: https://stackoverflow.com/q/15117037/447156) Eric Lippert’in cevabını birkaç defa okumanızı tavsiye ederim, muazzam yazılmış. Ayrıca bu soruya ben de 8 sene önce cevap vermişim ama tamamen aklımdan çıkmış 🙂
Şöyle diyor üstad;
“The compiler and the runtime are permitted to do so however they feel like it at the time. They need not be consistent from machine to machine, from run to run, and so on. Since this can only make calculations more accurate this is not considered a bug. It’s a feature. A feature that makes it incredibly difficult to write programs that behave predictably, but a feature nevertheless.”
Örneğin; Rextester içerisinde (https://rextester.com/FPD61501) true döndürürken, aynı kod DotNetFiddle içerisinde (https://dotnetfiddle.net/BkaDOo) false döndürüyor. Buradan da bu durumu anlamış oluyoruz.