Forum: Ders Arası RSS
D.ershane Diziler
erdem (Moderatör) #1
Üye Tem 2009 tarihinden beri · 981 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: D.ershane Diziler
    double [5] sayılar;
    assert (sayılar[1] !is double.nan);

Aslında bu kod parçacığında eğer dizi elemanları tanımlandığı zaman double.nan değeri alıyorsa yukarıdaki assert ifadesinin de is olmasını beklemezmiyiz.
acehreli (Moderatör) #2
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ı
Derleyici hatası...

Aslında sen bulduğun için hata raporunu senin açman daha doğru olurdu ama zaman kazanmak için ben şunu açtım:

  http://d.puremagic.com/issues/show_bug.cgi?id=5800

Ali
Bu mesaj acehreli tarafından değiştirildi; zaman: 2011-03-30, 16:11.
erdem (Moderatör) #3
Üye Tem 2009 tarihinden beri · 981 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
İngilizce yazma özürlü olduğum için benim açmadığım çok iyi olmuş :)
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ı
Ben de biraz erken davranmışım. Oraya yapılan bir yorum, .NAN'ın eşitlik karşılaştırmalarında kullanılmasının doğru olmadığını hatırlatıyor. Bakıyorum:

  http://digitalmars.com/d/2.0/expression.html

Orada "Equality Expressions" altında:

If either or both operands are NAN, then both the == returns false and != returns true.
(Cümle bozukluğu var: "both the" olmamalı.)

Yani "Eğer değerlerden birisi veya ikisi NAN ise; == false döndürür, != true döndürür."

Senin !is kullandığının farkındayım ama aynı yerde "Identity Expressions" başlığında söylendiği gibi; sınıf, yapı veya dizi olmayan türler için "identity is defined as being the same as equality" diyor: "kimlik, eşitlikle aynıdır".

O zaman haklılar: double.NAN'ı böyle bir eşitlikte kullanınca garip sonucu kabul etmeliyiz. Peki o zaman bir double'ın ilk değerinden bu yana değerinin değişip değişmediğini anlayamayacak mıyız? Herhalde .NAN yerine kendimiz başka özel bir değer kullanmalıyız.

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ı
Bunu benim bilmem gerekiyormuş! :)

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

Orada "Problemler"den hemen önceki tabloda "En Az Birisi .nan ise" diye bir sütun var ama açık olmadığını kabul ediyorum. :-/

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ı
Az önce birden bire aklıma geldi: zaten bu yüzden isnan() var ve daha önce benim de başıma gelmiş:

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

import std.math;
 
void main()
{
    double [5] sayılar;
    assert (isnan(sayılar[1]));
}

Oh! Rahatladım... :)

Ali
erdem (Moderatör) #7
Üye Tem 2009 tarihinden beri · 981 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #4
acehreli:
Bakıyorum:

  http://digitalmars.com/d/2.0/expression.html

Orada "Equality Expressions" altında:

If either or both operands are NAN, then both the == returns false and != returns true.
(Cümle bozukluğu var: "both the" olmamalı.)

Yani "Eğer değerlerden birisi veya ikisi NAN ise; == false döndürür, != true döndürür."

Aslında sol taraftaki açıklamalara bakınca :

nan: [nan], "not a number"

.nan bir değerin sayılarla karşılaştırılamaması mantıklı görünüyor. Demek ki kısaltmaların açılımını okumak gerekiyormuş :)

acehreli:
Senin !is kullandığının farkındayım ama aynı yerde "Identity Expressions" başlığında söylendiği gibi; sınıf, yapı veya dizi olmayan türler için "identity is defined as being the same as equality" diyor: "kimlik, eşitlikle aynıdır".

Standartta bu şekilde tanımlandığını anlıyorum. Ama bence yaptıkları kulağını ters eliyle tutmak gibi bir şey olmuş :-)  

acehreli:
Peki o zaman bir double'ın ilk değerinden bu yana değerinin değişip değişmediğini anlayamayacak mıyız?

İşte benim de aklıma takılan asıl soru buydu. Bahsettiğiniz isnan() sanırım tam da bu işi yapıyor.

Açıklamalar için teşekkürler!
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:
Forum: Ders Arası RSS
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-21, 15:17:27 (UTC -08:00)