Picproje Elektronik Sitesi

DERLEYİCİLER => Proton+ => Konuyu başlatan: bilgehansahin84 - 31 Mayıs 2009, 12:13:55

Başlık: İf then de float kantrol yapılamıyor mu?
Gönderen: bilgehansahin84 - 31 Mayıs 2009, 12:13:55
Arkadaşlar

alan var float

if alan == 1.2 then
   PORTD.0=0
endif

gibi bir kıyaslama neden olmuyor? Proton Derleyicisi desteklemiyor mu?
Başlık: İf then de float kantrol yapılamıyor mu?
Gönderen: vsalma - 31 Mayıs 2009, 12:38:54
Microcontrolrle uğraşmayalı çok oldu yok ama floating point sayılarda karşılaştırma yapılırken direk eşitliğe bakılmaz. Sayıların birbirlerine yakınlığına bakılır.
abs(sayi1 - sayi2) < 0.001 ise eşit kabul edilir gibi. .

Dikkate almadığımız hassasiyet kısmında farklılıklar olabilir.
Başlık: İf then de float kantrol yapılamıyor mu?
Gönderen: Tagli - 31 Mayıs 2009, 12:41:45
Evet ben de o şekilde biliyorum. Mesela 1 + 1 = 2.000000001 olabilir.
Başlık: İf then de float kantrol yapılamıyor mu?
Gönderen: Maxim - 31 Mayıs 2009, 13:40:00
evet float sayılarda noktadan sonraki haneleri göz ardı edince böyle sorunlar çıkabiliyor,benimde başıma gelmişti ,

1.200001 olabiliyor taglının dediği gibi ,

şöyle bir düzenleme yaparsan sorun kalmaz diye düşünüyorum ,


select alan

case 1.99 to 1.21
portd.0 =0

endselect