(0.09+0.01-0.1) neden 0.09+0.01-0.1 eşit değildir?

Katılım
20 Nisan 2005
Mesajlar
206
Konu başlığından da görüldüğü gibi, matematiksel olarak bunun sonucu sıfır olması gerekirken ekteki dosyayı da incelerseniz eşit olmadığı görülür. Nedenin ne olduğunu bende bilmiyorum. Eğlence olsun diye gönderiyorum.

İyi eğlenceler.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Evet, ilginc bir durum ...

sayilari degistirince yapmiyor da ...

0,1 yerine 0,2 yazinca mesela.
 
Katılım
28 Temmuz 2004
Mesajlar
275
Çok şaşırdım.

İntel işlemcilerin duyarlığı yüksek rakamlarda hata verdiğini okurdum dergilerden ama ilk defa görüyorum. Dergideki yazarlar uzaya araç göndermeyecekseniz bu sizin probleminiz değil diyorlardı ama...

AMD işlemci kullananlarda da aynı problem oluyor mu acaba?
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ama VBA de işler biraz daha değişik .... :mrgreen:

[vb:1:e920c5b5c8]Sub Test()
Dim Val1 As Double, Val2 As Double
Val1 = (0.09 + 0.01 - 0.1)
Val2 = 0.09 + 0.01 - 0.1
MsgBox (Val1 = Val2) & vbCrLf & "Val1 = " & Val1 & vbCrLf & "Val2 = " & Val2
End Sub
[/vb:1:e920c5b5c8]


[vb:1:e920c5b5c8]Sub Test2()
Dim Val1 As String, Val2 As String
Dim Val11 As Double, Val22 As Double
Val1 = "(0.09 + 0.01 - 0.1)"
Val2 = "0.09 + 0.01 - 0.1"
Val11 = Evaluate(Val1)
Val22 = Evaluate(Val2)
MsgBox (Val11 = Val22) & vbCrLf & "Val11 = " & Val11 & vbCrLf & "Val22 = " & Val22
End Sub
[/vb:1:e920c5b5c8]

Benim buradan anladığım, çalışma sayfasında Excel önce "string" olarak aldığı değerleri daha sonra "double" olarak boyutlandırıp, sonucu hesaplıyor.

Ama, bazı durumlarda bu parantezler olunca bir şekilde durum enteresanlaşıyor ... :mrgreen:

Not: Mesaj editlendi ...
 
T

TRABLUS

Misafir
Farklı bir örnek, zaten önemli olan araç değil amaç değilmi? :mrgreen:

Kod:
Private Sub dogru_topla()
Dim ReturnValue, I
ReturnValue = Shell("CALC.EXE", 1)
AppActivate ReturnValue
SendKeys I & "0,01", True
SendKeys I & "{+}", True
SendKeys I & "0,09", True
SendKeys "=", True
End Sub
 

htsumer

Altın Üye
Altın Üye
Katılım
7 Eylül 2004
Mesajlar
946
Excel Vers. ve Dili
Excel-2003
Altın Üyelik Bitiş Tarihi
16.08.2026
A3 Hücresini Matematiğin istediği şeklinde yaparsak eşitleniyor.
=(0,09+0,01)-0,1

doğrusuda bu olması gerek.
Ã?rnek:
B2,C2 ve D2 hücrelere değer yazdığınızda da aynısı olacak.
=B2+C2-D2

Bunu

=(B2+C2)-D2 yazarsak sonucu alırız..
diyorum.


İç içe kullanılan parantezlerde öncelik en içtekindedir. Aynı işlem önceliğine sahip elemanlarda işlem soldan sağa doğrudur.
İşlem öncelik sırası kuralları

1 Parantezler (( )) (( ))
2Toplama ve Çıkarma a+b a-b a+b a-b
 
Katılım
20 Nisan 2005
Mesajlar
206
A3 Hücresini Matematiğin istediği şeklinde yaparsak eşitleniyor.
Sayın htsumer,
=(0,09+0,01-0,1)/2=0 olması gerekmez mi? burada matematiksel bir yazım hatası var mı? Yok, ama bunun sonucu 0 değil -6,93889390390723E-18 çıkmaktadır. Böyle bir ifade (0,09+0,01-0,1) herhangi bir işlemin içinde olabilir.

Buna benzer, (0,09+0,01-0,1)*2=0 olması gerekirken, -2,77555756156289E-17 olarak çıkmaktadır.


Bunu nasıl açıklayacağız.

İyi akşamlar.
 
Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
hücreleri Bilimsel biçimlendirmeyin olsun bitsin.
 

htsumer

Altın Üye
Altın Üye
Katılım
7 Eylül 2004
Mesajlar
946
Excel Vers. ve Dili
Excel-2003
Altın Üyelik Bitiş Tarihi
16.08.2026
burada matematiksel bir yazım hatası var mı?
Evet var.
Hesap makinesinde işlemlerinizi sıra ile hatasız toplıyabiliriz.Ama,
parantez içine en az 2 tane rakam girilmesi gerek.Matematikte bunu böyle yapmıyormuyuz.
Bilgisayar dilindeki kuralı yazdım yukarıya..
Aynı işlemden olsa yani parantez içinde hep (+) toplam yapılsa tamam,işlem değiştiği için yani (-) işlemi girdiği için ..
Anlatmak istediği o şekildeki işlemlerin sonuçları yanlış çıkmakta.
Tam açıklıyamadım ama..

Matematikte A=A+1 yanlış olduğu halde, bilgisayar mantığında doğrudur. Tam tersini düşünün..
 
Katılım
20 Nisan 2005
Mesajlar
206
hücreleri Bilimsel biçimlendirmeyin olsun bitsin.
Sayın Bezl,
Bunu ben bir eğlence olsun diye verdim. Neden böyle bir sonuç çıktığını ben de bilmiyorum. Ama böyle bir ifadenin bir formülün içinde örneğin =(0,09+0,01-0,1)*200000000000000000 yer aldığını ve bunun sonucu 0 olması beklenirken ve bilimsel olarak biçimlendirmediğimizi varsayarsak bunun sonucu -3 olarak çıkacak ve biz bir sürü rakam arasında bu hatayı nasıl yakalayacağız. Bu mümkün olamayacak o zaman hatalı sonuçla yetineceğiz.

İyi eğlenceler.
 

htsumer

Altın Üye
Altın Üye
Katılım
7 Eylül 2004
Mesajlar
946
Excel Vers. ve Dili
Excel-2003
Altın Üyelik Bitiş Tarihi
16.08.2026
SGM020,
Sizin dediğiniz gibi eğlence olsun diye bu konu açıldı.Bırakalım öyle kalsın.. :mrgreen:
Birşey ispatlamak veya öğretmek gibi bir çaba içinde değilim sadece foruma yorumsal olarak yazdım.
Kolay gelsin..
 
Katılım
14 Aralık 2004
Mesajlar
144
Hücreleri Biçim/Hücre biçimlendirmeden(Bilimsel olan) sayı olarak değiştirildiğinde her ikiside sıfır oluyor
 
Katılım
20 Nisan 2005
Mesajlar
206
Farklı bir örnek, zaten önemli olan araç değil amaç değilmi?
Sayın Trablus, bence ekteki dosyada gösterildiği yöntemden şaşamamak gerekir.
Saygılar. :hihoho:
 
Üst