Yüzdelik Döngü Oluşturmak mümkün mü ?

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
30 yıldır Excel kullanırım..... ilk defa kod çalıştırılırken böyle bir hata alanı gördüm.

Deneme yapmak için o satırın yerine aşağıdakini yerleştirip, deneyin....

C#:
    minTemp = 5000000

.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Evet oldu Haluk Bey ,
Versiyon farkı olduğu için mi böyle sorun meydana gelebiliyor.
Sizce 2016 versiyonunu çalıştırsam daha stabil olur mu ne tavsiye edersiniz?

30 yıldır Excel kullanırım..... ilk defa kod çalıştırılırken böyle bir hata alanı gördüm.

Deneme yapmak için o satırın yerine aşağıdakini yerleştirip, deneyin....

C#:
    minTemp = 5000000

.
 

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
Sizdeki sorun editör ayarlarında galiba;

Bir de aşağıdaki şekliyle dener misiniz? (Nokta yerine virgül kullanınca bakalım ne oluyor....)

C#:
    minTemp = 1,79769313486232E+308
.
 

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
Neyse, daha fazla uğraşmaya gerek yok ..... ne olduğunu tam olarak anlayamadım.

Sizin probleminiz minTemp değişkenine değer olarak 5000000 atayınca sorun çözüldüğüne göre bu şekilde kullanın. Dosyada "Büyük değer" diye tanımladığımız değer 5000000 'un üzerinde olmadığı sürece sorun olmaz.

.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Çok teşekkür ederim Haluk Bey ;
Dediğiniz üzere elimde zaten verdiğiniz rakamdan büyük veri olması mümkün değil.
Tüm yardımlarınız için teşekkür ederim.

Çok vaktinizi aldım.
Eğer isterseniz 2016 versiyonda deneyerek daha sonraki çalışmalarınızda bir faydası olacaksa , bir fikir verecekse sonucunu bildiririm.
Tüm çalışmalarınızda başarılar.

Neyse, daha fazla uğraşmaya gerek yok ..... ne olduğunu tam olarak anlayamadım.

Sizin probleminiz minTemp değişkenine değer olarak 5000000 atayınca sorun çözüldüğüne göre bu şekilde kullanın. Dosyada "Büyük değer" diye tanımladığımız değer 5000000 'un üzerinde olmadığı sürece sorun olmaz.

.
 

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
Tamam, kolay gelsin ...

.
 

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
:)

Oradaki "E" harfi, matematikteki üslü sayılarda kullandığımız "10 üzeri 308" ifadesindeki "10 üzeri" kısmının VBA'deki karşılığı.

Yani sayı; 1,79769313486232 x (10 üzeri 308)

Söz konusu bu büyük sayı, VBA'de "Double" olarak deklare edilebilecek en büyük sayıdır.

Diğer yandan, siz virgül kullanarak hata almadığınıza göre sorun editör ayarlarınızda demektir.

Her neyse ....

.
 

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
Bu arada, sizin yaptığınız değişiklikle, minTemp değişkenine 309,79769313486232 değerini atamış oldunuz.

Küçük bir sayı olduğu için başka verilerde sakıncalı olabilir...... benden uyarması.

.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Haluk bey'in müsadesiyle,

Editörde hata almamak için aynı değeri veren;

minTemp = [(1+(1-2^-52))*2^1023]

yazılabilir.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
2016 64 Bit versiyonda hata vermiyor Haluk bey , bir mesaj yazdım düzeltmek için sildim erken karar vermişim , acemilik .
Tabi 102 sayısı küçük kalınca hata vermedi ilk haliyle.

Siz haklısınız tabi ki , düzeltme yaptığınız satırı kaydettim o şekilde çalışıyorum.

Sanırım 2019 versiyonunda bazı değişikler var , ben anlamıyorum detay tabi ki ama sorun yaşayanları duymuştum.
Tamamen bendeki 2019 versiyonu ile ilgili.
İyi çalışmalar diliyorum , her yardımınız için tek tek teşekkür ederim.

Bu arada, sizin yaptığınız değişiklikle, minTemp değişkenine 309,79769313486232 değerini atamış oldunuz.

Küçük bir sayı olduğu için başka verilerde sakıncalı olabilir...... benden uyarması.

.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Denedim Ömer bey dediğiniz üzere hata vermedi ,
Fakat Haluk Bey'in bahsettiği E harfi yani 10 üzeri 308 bu satırlarda nereye karşılık geliyor merak etmiyorum değil.

:)

Oradaki "E" harfi, matematikteki üslü sayılarda kullandığımız "10 üzeri 308" ifadesindeki "10 üzeri" kısmının VBA'deki karşılığı.

Yani sayı; 1,79769313486232 x (10 üzeri 308)

Söz konusu bu büyük sayı, VBA'de "Double" olarak deklare edilebilecek en büyük sayıdır.

Diğer yandan, siz virgül kullanarak hata almadığınıza göre sorun editör ayarlarınızda demektir.

Her neyse ....

.
Haluk bey'in müsadesiyle,

Editörde hata almamak için aynı değeri veren;

minTemp = [(1+(1-2^-52))*2^1023]

yazılabilir.
 

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
Ya da, bu şekilde olabilir;

C#:
    minTemp = 1.79769313486231 * Application.WorksheetFunction.Power(10, 308)

Ama sizde yine nokta/virgül karmaşası olursa, onu bilmem.....

.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Haluk bey,

Tahminime göre;

Olması gereken asıl değer, 1.7976931348623158E+308 editöre yazılınca sondaki 158 değer 2 olarak 1.79769313486232E+308 bu şekle dönüşüyor. Dönüşüm olan pc de kodlar çalışıyor fakat farklı pc de dönüşen değeri dikkate aldığı için kodlar hata veriyor.
 

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
Ömer Bey, o zaman en kestirmesi sayıyı hafiften biraz küçültmek yeterli olur. (sayının ondalık kısmını ihmal edebiliriz)

C#:
    minTemp = 1E+308

.
 
Üst