Thread overview
tür nitelikleri hakkında
Oct 24, 2015
cos00kun
Oct 24, 2015
nurullahisrgan
Oct 24, 2015
cos00kun
October 24, 2015

Bayağı bi kafanızı şişireceğim bu aralar :)

D ile tür niteliğine bakıyodumda normalde

writeln("En kucuk degeri     : ", double.min);

yazdığımızda kitabımıza göre çalışması gerkemezken hata mesajından yola çıkarak onun yerine

writeln("En kucuk degeri     : ", double.min_normal);

kullandığımızda bu çalışıyor.. Oysa int veri türü için böyle birşeye ihtiyaç duyulmuyor.. neden min_normal diye bir nitelik coduna ihtiyaç duyulmuş ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 24, 2015

Galiba aynı soru burada sorulmuş: http://forum.dlang.org/post/i3vntf$1e2l$1@digitalmars.com
Çevirmeden baktığım için belki sorunuza benzemiyor olabilir.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 24, 2015

Sadece tahmin yani acayip kafadan sallamış da olabilirim.

double.min normalde -sonsuz göstermesi gerekir fakat onun yerinee floating limitini gösteriyor.
min demenin karmaşa oluşturacağını düşünüp sonsuzları dahil etmeden min_normal demişler bence :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 24, 2015

Ö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. ]

October 24, 2015

O mesajın düzeltilmesi için bir hata raporu açtım:

https://issues.dlang.org/show_bug.cgi?id=15244

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 25, 2015

D dlindeki ilk merhaba dünya programımn bu denli konuya derinlik kazandıracak bir olaya dahil olmasına çok şaşırdım :)
dediklerinizi aslında acemi birinin anlaması biraz karışık olabilir ancak zamanında assambly ile ve registerlarla bol bol ilgilenip aynı sorunu C++ dilindeki precission eşitlemelerindede yaşadığımdan anlayabiliyorum.. sonuç itibariyle C ++ de nerdeyse iki farklı değişkeni farklı tiplerde tanımlayıp iki değişkeni karşılaştırma operatörüne soktuğunuzda garip gözüksede eşit değeri üretmiyodu code niz :) ordaki araştırmalar sonucunda özellikle int dışı kesirli sayılarda her derleyici direk basitçe bir çözüm elde edememekte ve alt üst limit konularıda buna bağlı olarak bu şekilde dallanmakta sanırım.. çok ama çok teşekkürler

Ali bey.. inanın herkese açık bir kitap yazan ve onca işi arasında üşenmeyip her daim bizlere zaman ayıran sizin gibi bir insanla tanışmak beni çok ama çok mutlu ediyor.. bazan özeleştiriyede yönlendiriyor insanı zira bence artık üretmek > tüketmek olma zamanı geldide geçiyor bile :) Sağolun varolun..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 24, 2015

Temel Türler bölümünün probleminde bu konuya değindim:

http://ddili.org/ders/d/temel_turler.html

Kesirli Sayılar bölümündeki bir örneğe en küçük değerleri de ekledim (örneğin, -double.max):

http://ddili.org/ders/d/kesirli_sayilar.html

(Sayfaları tarayıcınızda güncellemek gerekebiliyor.)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]