[elektro] mikroC PRO for PIC32 ceil probléma
SZIGETI Szabolcs
szigiszabolcs at gmail.com
Tue Nov 19 12:54:14 CET 2013
Akik még számoltak logarléccel, azok nagy előnyben vannak az ilyen
feladatoknál :-)
Szabolcs
2013. november 19. 12:52 SZIGETI Szabolcs írta, <szigiszabolcs at gmail.com>:
> Hali!
>
> Minden C tud fixpontos ábrázolást. Long, int, char. Oda teszed a pontot
> (vesszőt), ahova akarod.
> A C gép közeli nyelv, így az alatta lévő hardver számábrázolását fogja
> leginkább használni. Így egészekkel és (rendszerint manapság IEEE754
> formáítumú) lebegőpontosokkal lehet játszani.
>
> Fejlettebb nyelvekben van mindenféle csoda, mint bignum, stb. Meg persze
> C-ben is lehet írni erre függvényeket, de szerintem a hőmérséklet 2 tizedes
> kiírására van egyszerűbb megoldás is.
>
> Szabolcs
>
>
>
> 2013. november 19. 12:36 Nagy Sándor írta, <nasa at 68.hu>:
>
>
>>
>> É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]
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>
>
>
More information about the Elektro
mailing list