Merhaba FLOAT tipindeki bir sayıyı virgülden sonraki kısmını artırıp azaltmak istiyorum. Bunu nasıl yapabilirim. Aşağıdaki gibi yapınca virgülden sonraki sayılar istediğim gibi artıp azalmıyor. artma miktarı 0.025 olacak
örnek
DIM sayi as FLOAT
sayi=100.0000
if PORTB.0=0 then
sayi=sayi+0.025
endif
bir sorun yok, artıyor güzelce?
VERI=100.000
VERI=100.025
VERI=100.050
VERI=100.075
VERI=100.100
VERI=100.125
VERI=100.150
VERI=100.175
VERI=100.200
VERI=100.225
VERI=100.250
VERI=100.275
VERI=100.300
VERI=100.325
VERI=100.350
VERI=100.375
VERI=100.400
VERI=100.425
VERI=100.450
VERI=100.475
VERI=100.500
VERI=100.525
VERI=100.550
VERI=100.575
VERI=100.600
VERI=100.625
VERI=100.650
VERI=100.675
VERI=100.700
VERI=100.725
VERI=100.750
VERI=100.775
VERI=100.800
VERI=100.825
VERI=100.850
VERI=100.875
VERI=100.900
VERI=100.925
VERI=100.950
VERI=100.975
VERI=101.000
VERI=101.025
VERI=101.050
VERI=101.075
VERI=101.100
VERI=101.125
Buton okuma böyle yapılmaz:
if PORTB.0=0 then
sayi=sayi+0.025
endif
forumda aratırsanız, buton okuma hakkında tüyolar çok.
Maalesef o şekilde artmıyor virgülden sonraki sayılar 1 eksik şekilde artıyor. 100.024 gibi
o zaman sorun sizde
bende gayet güzel ve problemsiz.
proton version 3.5.6.7
Dim sayi As Float
sayi=100.0000
loop:
HRSOut "VERI=", Dec3 sayi,13,10
sayi=sayi+0.025
GoTo loop
Bu normal. Aslında 100.024 değil, belki de 100.024998 gibi bir şey oluyordur. Kayar noktalı sayılarda belli bir hassasiyet vardır. Onluk sistemde düşündüğümüz her sayıyı ifade edemezler. Sayının kaç bit ile ifade edildiği de bu hassasiyette etkilidir.
Maxim'in son iletisini yeni gördüm. Sorun derleyici ile ilgili olabilir. Belki bir bug vardı ve sonradan düzelttiler. Gösterim sırasındaki yuvarlama seçeneklerinde de farklılık olabilir.
proton version 3.5.6.7 nereden indirebilirim? Bendeki versiyon 3.5.5.5
tagli yazınca uyandım
koduna şu satırları ekleyip tekrar denermisin?
DIM sayi as FLOAT
sayi=100.0000
if PORTB.0=0 then
Float_Rounding = Off
sayi=sayi+0.025
Float_Rounding = On
endif
Float_Rounding = Off
Float_Rounding = On
bu komutlarda derleyici hata veriyor.
son kez bu şekilde deneyin
olmaz ise derleyici versiyon sorunu çünkü bende problem yok
declare Float_Rounding = Off
sayi=sayi+0.025
declare Float_Rounding = On
hata vermedi ama sonuçta değişmedi.
fofo sen sonucu nerede kontrol ediyorsun? Aslında bence Maxim'de de durum aynı ama HRSOut komutu sonucu yuvarlayarak çıkartıyor.
Ben sonucu deneme kartından datayı bilgisayara gönderek hemde kart üzerindeki LCD den kontrol ediyorum.
bende lcd de sorunsuz
O zaman hata bendeki versiyondan kaynaklı, Proton' un yeni versiyonunu nereden indirebilirim.
gecikme koymassanız bir anda çok artış yapar
DIM sayi as FLOAT
sayi=100.0000
if PORTB.0=0 then
sayi=sayi+0.025
delayms 200
endif