Round float24

Tomáš Hamouz hamouz na alsoft.cz
Středa Únor 13 14:06:18 CET 2013


Však to není nic divného.

127.670000 je hezké číslo v desítkové soustavě, ale jeho binární
rozvoj už tak hezký není, rozhodně postrádá ty nuly na konci
V double je mantisa
1111 11101010 11100001 01000111 10101110 00010100 01111011

Všimněte si že na konci žádné souvislé nuly nejsou.

totéž ve float
1111111 01010111 00001010

Proto jakmile číslo 12767 (vyjádřené přesně)
s mantisou
 1000111 01111100 00000000

podělíte číslemm, které není násobkem 2, tak vám vyjdou "nehezká"
čísla, prostě proto že výsledek nelze vyjádřit přesně pomocí zlomků
dvou (tedy 1/2, 1/4, 1/8 atd.).

Tomáš




H> Vypadne float 12767.00000, ale nedá se s tím nijak pracovat. Po
H> jakémkoliv pokusu o posun desetinné tečky se to číslo dojebe.
H> Chtěl bych ale zkusit posunutí v mantisse, mohl by mi někdo poradit
H> jak tohle udělat s XC8 nebo Hi-Tec kompilerem v Mplabu?
H> S pozdravem,
H> Miloš Dašek

H> Dne 13. února 2013 13:27 Jan Waclawek <konfera na efton.sk> napsal(a):
>> Neviem, co znamena presne float24, ale ak je to 15+1 bit mantisa, tak tam
>> predsa z principu musi vojst 12767 < 32767, nie?
>> Co vypadne z
>> int x = 12767;
>> float y = (int)x;
>> ?
>>
>> wek
>>
>> ----- Original Message ---------------
>>>24bit by, aspoo podle Mplabu milo na tohle staeit, ale místo toho to
>>>dilá neplechu. Ta zmina mantisy mni taky napadla, ale je to na mni u3
>>>tak trochu vy11í díveí, nad typem float mi asi nepovolí takové operace
>>>tak3e nejspí1 nijaká konverze, mohl byste alespoo nastínit postup?
>>>S pozdravem,
>>>Milo1 Da1ek
>>>
>>>Dne 13. února 2013 12:26 Martin Persich <persich na transcon.cz> napsal(a):
>>>> A co vyzkouset zmenit "natvrdo" mantisu +- 1 a zjistit, jaka je zmena
>>>> "flloat" hodnoty. Mam take obavu, ze 24 bitovy float nebude schopen vyjadrit
>>>> cislo na pet platnych mist. Nedavno jsem delal neco ve float16 a to je uplna
>>>> tragedie ... ale obsas to muze byt uzitecne ...
>>>> Martin. persich na transcon.cz
>>>>
>>>> ----- Original Message ----- From: "Hfmcons" <hfmcons na gmail.com>
>>>> To: "HW-news" <hw-list na list.hw.cz>
>>>> Sent: Wednesday, February 13, 2013 11:37 AM
>>>> Subject: Re: Round float24
>>>>
>>>>
>>>> No, konkrétni mi nefunguje tento kód:
>>>> int x = round(127,67383*100);
>>>> float y = (int)x; // tady by milo být v y 12767,00000 ale je 12767,xxxxx
>>>> S pozdravem,
>>>> Milo1 Da1ek
>>>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
H> _______________________________________________
H> HW-list mailing list  -  sponsored by www.HW.cz
H> Hw-list na list.hw.cz
H> http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list