Önce kısa yanıt: en küçük değeri istiyorsak -double.max yazarız, en küçük normalize değeri istiyorsak double.min_normal yazarız.
Uzun yanıt: :)
nurullahisrgan, gösterdiğin forum konusu bu konu ile yakından ilgili ama bu konunu başka incelikleri var. :)
Zekeriya, -.infinity ve .infinity en küçük ve en büyük değer değiller çünkü onlar hesabın alttan ve üstten taştığı bilgisini veren özel değerler. Sonsuz değerinin geçtiği her ifade sonsuz değerini korur. Kesirli sayıların tamsayılara bir üstünlüğü, taşma bilgisini korumasıdır.
cos00kun, bu konu için çok teşekkür çünkü kitaptaki yanlışlıklar ve eksiklikler benim için çok önemli.
Kafa şişirme diye bir şey söz konusu olamaz çünkü burası insanların soru sorup yanıt aldıkları bir yer. Üyeler buraya "umarım bir şey yazılmamıştır" diye değil, "bakalım ne yazılmış" diye geliyorlar. :) Kendi adıma, ben çok sayıda kısa ve öz konu istiyorum. Bence kötü olan, az sayıda ama her yöne dallanmış konular... Yani, yazmakta sakınca yok. :)
min ile .min_normal'in hikayesi ilginç...
Tamsayılarda .min ve .max niteliklerinin olması küçük ve büyük değerlerin birbirleriyle ilgisiz olmaları. Örneğin, byte için -128 ve 127, ubyte için 0 ve 255. Kesirli sayılarda böyle değil: sıfırdan küçük ve büyük değerler simetriktir. Dolayısıyla, örneğin double.min'e gerek yoktur çünkü zaten -double.max'a eşittir.
Öte yandan, yalnızca kesirli sayılarda bulunan ve .min_normal niteliği ile gösterilen bir kavram var:
http://ddili.org/ders/d/kesirli_sayilar.html#ix_kesirli_sayilar..min_normal
nurullahisrgan'ın gösterdiği konuyu bearophile açmış: Bu güne kadar en fazla hata raporu açan ve forumlara en fazla katkı getiren bir arkadaştır; hep başka dillerde gördüğü yararlı olanakların D'ye de eklenmesini ister(di). (Bu günlerde ortada görünmüyor; herhalde bir süreliğine başka dillere bakıyordur. :) )
bearophile'ın söylediği şu: "Belgelerde kesirli sayılar için .min görünmediği halde .min kullanılabiliyor ve .min_normal ile aynı değeri veriyor. Bu karışıklığa yol açar çünkü türden bağımsız kodlarda .min kullanıyorum ama bana 'en küçük değeri' (yani -.max'ı) vermiyor."
bearophile haklı. O yüzden de, yakın zamanda olsa gerek, derleyici böyle bir uyarı vermeye başlamış. Ancak, bence hata mesajı hatalı. :) Bence doğru mesaj şu olmalıydı: ".min yerine ya -.max'ı ya da .min_normal'i kullanın." Çünkü bugünkü kodda .min yazan programcının en küçük değeri mi (örneğin, -double.max) yoksa en küçük normalize değeri mi (double.min_normal) istediğini bilemeyiz.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]