Konu: MOD(-1,9) == ?
Merhaba!
Benim bildiğim:
MOD(-1,9) == -1
Vfp'ya göre:
MOD(-1,9) == 8
C'de ve php'de test ettim: sonuç -1
Göremediğim, bilmediğim birşeymi var burda?
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
Merhaba!
Benim bildiğim:
MOD(-1,9) == -1
Vfp'ya göre:
MOD(-1,9) == 8
C'de ve php'de test ettim: sonuç -1
Göremediğim, bilmediğim birşeymi var burda?
Excel bu konuda şöyle diyor:
MOD(n, d) = n - d*INT(n/d)
ve sonuç VFP'deki gibi 8 çıkıyor.
Bu formülü Vfp'ya komut penceresine girince bende sadece bir boş satır atlıyor,
Verdiğin formül ile C'de hesaplatırdım, ve orda tekrar -1 çıktı.
void test(void)
{ volatile static int n, d, x;
x = 0;
n = -1;
d = 9;
x = n - d * (n/d);
printf("%d", x);
getchar();
}
Haklısın Üstad.
Negatif sayıların mod hesaplamasındaki farklılıklara aşağıdaki linklerde de değinmişler.
http://thedailyreviewer.com/office/view … -115181335
http://support.microsoft.com/kb/141178
VFP kendi tanimina ters dusuyor ama belki de kendi tanimini yanlis yapmis demek daha dogru. O formule gore VFP'de -1 cikiyor. Matematikcilere gore de olaya nasil baktigina bagli imis:
http://mathforum.org/library/drmath/view/52343.html
Iki cevap da dogru yani:) Olayin ozunde 'remainder' icin "integer division" isleminde sonucu nasil belirledigin yatiyor:
Excel ve VFP'ye gore -1/9 = -1 : -ceiling(1/9)
C'ye gore: -1/9 = 0
Operator sirasi Excel ve VFP'de once division sonra unary oluyor. Ozetle kullandigin hesaplayiciya guvenme, onun tanimina gore ne sitiyorsan oyle yap demisler.
Linkler için teşekkürler.
Sevgili Arkadaşlar,
İşlemleri tek tek yaparsaniz sonucun -1 olması gerektiği görülüyor.
Şöyleki:
int(-1/9) = 0
9*int(-1/9) = 0
-1-0 = -1
Sevgilerimle.
Erdal
laf olsun diye birde linux shell'de bu komutu verdim:
echo $(( -1 % 9))
sonuç -1.
Sanırım bu sorun sadece Microsoft'un kendi ürünlerinde ortaya çıkıyor.
C# 'ı bilgisayarımdan sildiğim için, orda test edemiyorum. Çetin Bey, müsait bir vaktinizde orda denermisiniz?
C#'ta -1.
Not: Eger istersen 2-3 Mb boyutunda LinqPad'i indir. Kurman filan da gerekmiyor. Onunla interaktif C#,VB, F#, SQL ve ESQL kullanabilirsin. www.linqpad.net
Test için teşekkür ederim.
LinqPad'a gelince; daha evvelki konularda belirtiğim gibi: Vfp ve WinXP benim kullandığım son Microsoft'a ait ürünler. Ve anlaşılan bu LinqPad tamamen MS'in ürünleri için geliştirilmiş bir araç. Bu nedenle LinqPad'i kullanmak için altyapım yok.
Mehmet abi, çizgiyi çok keskin çizdin