Forum: D Programlama Dili RSS
tür nitelikleri hakkında
cos00kun #1
Üye Kas 2014 tarihinden beri · 109 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: tür nitelikleri hakkında
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ş ?
E=mc^2
nurullahisrgan #2
Üye Ock 2015 tarihinden beri · 76 mesaj · Konum: Mardin, Nusaybin
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Galiba aynı soru burada sorulmuş: http://forum.dlang.org/post/i3vntf$1e2l$1@digitalmars.com
Çevirmeden baktığım için belki sorunuza benzemiyor olabilir.
Avatar
zekeriyadurmus #3
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
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
Bilgi meraktan gelir...
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ö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_sa…

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
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
O mesajın düzeltilmesi için bir hata raporu açtım:

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

Ali
acehreli (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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
cos00kun #7
Üye Kas 2014 tarihinden beri · 109 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
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..
E=mc^2
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-22, 02:52:09 (UTC -08:00)