[elektro] mikroC PRO for PIC32 ceil probléma

Nagy Sándor nasa at 68.hu
Tue Nov 19 12:36:32 CET 2013


 

Értem már, akkor csak az marad a kérdés, hogy csak az én fordítóm nem
tud semmilyen fix pontos számábrázolási módot, vagy az általánosan
elmondható a C nyelveknél? 

---

Üdvözlettel: Nagy Sándor

2013-11-19 12:31 időpontban Móczik Gábor ezt írta: 

> 2013.11.19. 11:05 keltezéssel, Nagy Sándor írta:
> 
>> Már lassan kezdek belenyugodni, csak azért mégsem értem azt, hogy a mikroC-ben nincs egy olyan számformátum, amivel akár 2 tizedes jegyig sem lehet törtekkel számolni!
> 
> Ha tudod hogy 2 tizedesjegy kell, akkor tárold kvázi fixpontos 
> formátumban, integerként, még a végrehajtási sebesség is nagyságrendileg 
> nagyobb lesz.
> 
> Tárolod a számok 100-szorosát, ezzel számolsz mindehol, ha meg kell 
> jeleníteni, akkor pedig ugyanúgy jeleníted meg mint egy egész számot, 
> csak a vége előtt két karakterrel kiteszel egy pontot a kijelzőre.
> 
> Ha a printf függvént használod, akkor mondjuk
> printf("%d.%02d",x/100,x%100)
> 
>> emellett biztos van olyan alkalmazás, ahol megfelelhet ez a szám ábrázolási mód, de hiába töröm a fejem, nem jut eszembe olyan, ahol ez megfelelő lehet, persze tuti van, és csupán hatalmas kíváncsiságom miatt érdekelni is, hogy mi lehet az a terület, ahol azt feltételezem egy szoftverben, hogy az általam használt matematikai műveletek 2 tizedes jegyig pontosak, de ez mégsem igaz
> 
> Nem minden egyes szám képezhető le decimális-->bináris konverzióval, 
> vannak lyukak. Ettől még azok a lehető legközelebb vannak a valós 
> számhoz ami matematikailag kijön, ez alkalmas matematikai számítások 
> végzésére, hogy a részeredmények a lehető legkevesebb kerekítési hibát 
> tartalmazzák.
> 
> Nem való egyenlőség összehasonlításra, és nem hatékony, nem célszerű 
> csak azért használni, hogy legyen benne tizedespont. Erre sokkal 
> hatékonyabb a fenti fixpontos ábrázolás.
> 
>> Alapvetően, mint teljesen kezdő mikroC felhasználó, nagyon sok mindent furcsállok, például nem tud két tömböt összehasonlítani, még nem is az a nagyobb gond, hanem az, hogy a fordító sem figyelmeztet rá, hogy ez nem fog helyes eredményt adni!
> 
> Mert a C nyelvben nincs tömb összehasonlító operátor, mitöbb, tömb sincs!
> 
> A tömb egy egyforma elemeket tartalmazó memóriaszakaszra mutató pointer. 
> Ebből következik, hogy az összehasonlítás a két pointer értékét 
> hasonlítja össze, nem a pointer által mutatott területen található 
> értékeket.
> 
> A memcmp függvénnyel lehet memóriaterületek tartalmát összehasonlítani.
> 
> -----------------------------------------
> elektro[-flame|-etc]
 


More information about the Elektro mailing list