Picproje Elektronik Sitesi

DERLEYİCİLER => MikroC - PIC => MikroC ARM => Konuyu başlatan: universitelim54 - 29 Temmuz 2019, 22:11:01

Başlık: MikroC arm de aritmetik işlem sorunu
Gönderen: universitelim54 - 29 Temmuz 2019, 22:11:01
mrb. arkadaslar mikroc arm de sıradan bir  bölme işlemi yaparak lcd ekranda float sayıyı görmeye calısıyorum . aşagıdaki gibi kod yazdım ancak sonuc 1233.999 gibi sacma sapan bir sayı gösteriyor.

longsayi=1234567;



floatsayi =  (longsayi / 1000) ;
         
         Lcd_Cmd(_LCD_CLEAR);
           floatToStr(floatsayi, LCD_Buff );
                 Lcd_Out(1,1,LCD_Buff);



sonuc 1233.999


konu ile yardımınıızı rica ederim.
Başlık: Ynt: MikroC arm de aritmetik işlem sorunu
Gönderen: devrecii - 30 Temmuz 2019, 00:20:22
floatsayi = (float)  longsayi / 1000.0f ;    bi şöyle dene

longsayi=1234567;  floatsayi =longsayi;  floatsayi/= 1000;  bir de böyle
Başlık: Ynt: MikroC arm de aritmetik işlem sorunu
Gönderen: universitelim54 - 30 Temmuz 2019, 08:19:05
          longsayi=8787878879  ;
          floatsayi= longsayi;
          floatsayi/=1000;
          Lcd_Cmd(_LCD_CLEAR);
          floatToStr(floatsayi, LCD_Buff );
          Lcd_Out(1,1,LCD_Buff);

sonuc 197944.2 sonuc hatalı iboibo kardeşim
Başlık: Ynt: MikroC arm de aritmetik işlem sorunu
Gönderen: universitelim54 - 30 Temmuz 2019, 10:31:12
bilen yokmu arkadaslar bu sorunun kaynagını
Başlık: Ynt: MikroC arm de aritmetik işlem sorunu
Gönderen: RaMu - 30 Temmuz 2019, 11:49:10
Alıntı yapılan: universitelim54 - 30 Temmuz 2019, 08:19:05longsayi=8787878879  ;
Bu long a sığmaz.
Mod 4milyar küsürünü(32 bite sığan max sayı) alırsan
bu değişkenin içine yazdığın sayının
197944299
olduğunu görürsün, printf ile longsayının değerinide yazdırıp bak.

İlk örnekteki ise saçma veya yanlış değil,
float işlemler yapılırken yaklaşık sonuçlar alırsın,
kullandığın çoğu picte float işlem yapabilecek donanım yoktur,
yazılım ile belli yömtemler kullanılarak float işlemleri yaklaşık olarak yapılır.
Buradada kütüphane neyi nasıl yapıyorsa o sonuçları alırsın.
MikroC şunu kullanıyorum demiş:
https://download.mikroe.com/documents/compilers/mikroc/pic/help/arithmetic_types.htm