Neden 0 değil

Başlatan z, 13 Şubat 2009, 10:44:41

z

y ve a real, b integer ve

a=42.4
b=42400 olmak uzere

y= a - b / 1000;

islemini yaptirdigimda y=-1.4224732503e-15 sonucu aliyorum.

Halbuki sonucun 0 cikmasi lazim.

Sorunun nedeni hakkinda fikriniz varmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Analyzer

Üşeniyorum, öyleyse yarın!

agora_meyhanesi42

Çok afedersiniz ama sonucun nasıl sıfır çıkması lazım merak ettim. Ya matematik kanunları değişti ya benim kafam bulanık bir açıklama lütfen :)
Yüksel Türk ! Senin için yükselmenin hududu yoktur...

ground

Alıntı yapılan: "agora_meyhanesi42"Çok afedersiniz ama sonucun nasıl sıfır çıkması lazım merak ettim. Ya matematik kanunları değişti ya benim kafam bulanık bir açıklama lütfen :)

işlemlerde öncelik sırası şöyledir:

Alıntı Yap1. Parantezli işlemler: ( ... )
2. Üs alma işlemi: 23 = 2.2.2 = 8
3. Ardışık işaretler: -(+(-(-3))) = -3
4. Bölme ( / ) veya çarpma ( . ) işlemi
5. Toplama ( + ) veya çıkarma ( - ) işlemi
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

z

0 = 42.4 - (42400 / 1000);
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

agora_meyhanesi42

Yalnız dikkatinizi çekerseniz ilk mesajda hiç bir yerde parantez yok. Açıklamalar için sagolun bu arada
Yüksel Türk ! Senin için yükselmenin hududu yoktur...

z

Parantezli hali ile parantezsiz hali ayni anlama gelir zaten.


Eger islemleri asagidaki gibi yapiyorsan vay haline.

42.4 - 42400 / 1000 =  (42.4 - 42400) / 1000
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

agora_meyhanesi42

Neden vay halime insanların kafası bazen dönebilir. Ben bir yazılım şirketinde çalışıyorum programcıyım evet dediğinde haklısın parantezli veya parantezsiz hali aynı ama insanın beyni uçuyor bazen işte herkesin nasıl bir ruh hali içerisinde oldugu belli olmuyor :)

Kolay gelsin
Yüksel Türk ! Senin için yükselmenin hududu yoktur...

z

Vay heline dememin sebebi, pek cok aritmetik islemin yapildigi bir programi yazarken bu tip hatalari yaparsan programi isler hale getirmek icin cok zaman kaybedersin.

Yoksa hepimiz benzer hatalari yapiyoruz.

Mesela benim en unlu hatam asembly programlamada # isaretini kullanmayi bazen unutmamdir. Bu durumda bu yazilimadki hatayi yakalamam bazen bir hatta iki gunumu alir.

Hatayi buldugumda # isaretini koymadigimi gorurum ve kendi kendime soz veririm tamam artik bundan sonraki meslek hayatimda bu hatayi asla yapmam derim ama nafile....
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

agora_meyhanesi42

Sorunu visual basicde denedim vb.net ve vb 6.0 kullandıgım için delphi ile ilgilenmiyorum. Analyzer arkadaşın dediği gibiymiş floatdan dolayı

a = 42.4 - (CDbl(42400 / 1000))

bu işlem visual basicte dogru cıkıyor.  CDbl sayıyı Double yani delphideki floata çevirmek için kullanılan komut. Delphiyi pek bilmiyorum ama sanırım ondanda IntToFloat gibi bir şeydir eğer sen biliyorsan banada soyle bende ogrenmiş olayım :)
Yüksel Türk ! Senin için yükselmenin hududu yoktur...