Picproje Elektronik Sitesi

DERLEYİCİLER => Proton+ => Konuyu başlatan: fofo - 22 Ağustos 2014, 19:30:40

Başlık: FLOAT sayı artırma azaltma
Gönderen: fofo - 22 Ağustos 2014, 19:30:40
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
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: Maxim - 22 Ağustos 2014, 19:47:42
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
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: Gökhan BEKEN - 22 Ağustos 2014, 19:50:06
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.
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: fofo - 23 Ağustos 2014, 09:05:56
Maalesef o şekilde artmıyor virgülden sonraki sayılar 1 eksik şekilde artıyor.   100.024 gibi
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: Maxim - 23 Ağustos 2014, 09:14:18
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
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: Tagli - 23 Ağustos 2014, 09:18:33
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.
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: fofo - 23 Ağustos 2014, 09:34:13
proton version 3.5.6.7 nereden indirebilirim? Bendeki versiyon 3.5.5.5
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: Maxim - 23 Ağustos 2014, 10:01:35
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
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: fofo - 23 Ağustos 2014, 10:09:45
Float_Rounding = Off
Float_Rounding = On
bu komutlarda derleyici hata veriyor.
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: Maxim - 23 Ağustos 2014, 10:32:40
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
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: fofo - 23 Ağustos 2014, 10:52:03
hata vermedi ama sonuçta değişmedi.
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: Tagli - 23 Ağustos 2014, 10:59:33
fofo sen sonucu nerede kontrol ediyorsun? Aslında bence Maxim'de de durum aynı ama HRSOut komutu sonucu yuvarlayarak çıkartıyor.
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: fofo - 23 Ağustos 2014, 11:07:44
Ben sonucu deneme kartından datayı bilgisayara gönderek hemde kart üzerindeki LCD den kontrol ediyorum.
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: Maxim - 23 Ağustos 2014, 12:47:12
bende lcd de sorunsuz
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: fofo - 23 Ağustos 2014, 12:52:47
O zaman hata  bendeki versiyondan  kaynaklı, Proton' un yeni versiyonunu nereden indirebilirim.
Başlık: Ynt: FLOAT sayı artırma azaltma
Gönderen: eozkantar - 18 Eylül 2014, 11:33:58
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