Round float24

Tomáš Hamouz hamouz na alsoft.cz
Středa Únor 13 11:46:39 CET 2013


A jaká hodnota je v x?

Tomáš

H> No, konkrétně mi nefunguje tento kód:
H> int x = round(127,67383*100);
H> float y = (int)x; // tady by mělo být v y 12767,00000 ale je 12767,xxxxx
H> S pozdravem,
H> Miloš Dašek

H> Dne 13. února 2013 10:49 Tomáš Hamouz <hamouz na alsoft.cz> napsal(a):
>> Pravděpodobně se číslo 127,67000 nedá vyjádřit ve float přesně.
>> viz http://gregstoll.dyndns.org/~gregstoll/floattohex/
>>
>> Tomáš
>>
>> H> Zdravím,
>> H> potřeboval bych v XC8 nebo Hi-Tech zaokrouhlit float24
>> H> číslo(proměnnou) 127,67383 na 127,67000. A´t dělám co dělám, výsledkem
>> H> je vždy nějaká modifikace původního čísla(na všech pozicích za
>> H> desetinnoum tečkou jsou nějaké hodnoty). Zkoušel jsem kde co i
>> H> konverze round(float) pak do int a zpět do float atd. Co jsem tak
>> H> ještě nezkoušel je modf(), protože na malých MCU jsou operace s FP
>> H> zbytečným plýtváním a tak potřebné radši přepisuju do celých čísel.
>> H> Přesto by mně zajímalo, proč to zaokruhlení nefunguje. Manuály k oběma
>> H> kompilérům žádné omezení, pokud jsem něco nepřehlédl, při práci s
>> H> float24 nepopisují. Vidím to na nějaké přehlédnutí některé vlastnosti,
>> H> ale nedaří se mi k tomu nic dohledat, byl by někdo ochotný tohle
>> H> objasnit?
>> H> S pozdravem,
>> H> Miloš Dašek





Další informace o konferenci Hw-list