Anonymní profil semo – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil semo – Programujte.comAnonymní profil semo – Programujte.com

 

Příspěvky odeslané z IP adresy 77.48.233.–

semo
C / C++ › Výpočet float a převod na un…
23. 2. 2018   #219818

#20 hlucheucho
Jasně, to jen, kdybys chtěl ten kód někam přenášet. Na PC už je double samozřejmě větší a házelo by to warningy.

Ohledně toho standardu: chtěl jsem tě odkázat na tohle: http://stereopsis.com/FPU.html. Je tam hodně rychlé přetypování založené na formátu floatu. Neříkám, že pro tenhle případ, ale někdy by se to mohlo hodit. Nicméně je to tam pro double a nemůžu najít verzi pro float. A nechce se mi ji teď vymýšlet. Takže asi nic :-).

semo
C / C++ › Výpočet float a převod na un…
23. 2. 2018   #219814

Ještě se chci zeptat:

1) Jsou ty floaty standardu IEEE 754 ?

2) Suffix f nepíšeš naschvál, nebo počítáš v doublech, nebo to double nepodporuje?

semo
C / C++ › Výpočet float a převod na un…
23. 2. 2018   #219811

Já bych použil třeba něco jako:

dac = floor(0.5 + (std::max(0.0, std::min(1.0f, voltage / 30.0f)) * (65535.0f - FLT_EPSILON)));

semo
C / C++ › Výpočet float a převod na un…
23. 2. 2018   #219809

#11 hlucheucho
dac = voltage * 2184.53333  (z Tvého příspěvku)

se rovná 65535.9999 (při voltage 30.0). To už vypadá poměrně nebezpečně pro 2B, ne?

Otázka je, jak se tam ty trojky na konci 2184.533333 dostaly. Pravděpodobně jsi použil 65536/30. 

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý