Pokusy s unsigned long a pevnou des. čárkou na 3 des. místa ukázaly:
1. u konstanty nemusí 3 desetinná místa vyhovovat. Příklad je konstanta 2184,5. Pokud se chci vyhnout dělení výsledku, protože je každé číslo uloženo jako 1000-násobek, musel bych použít 2,1845 tedy 4 des. místa. Omezení na 3 des. místa pak znemožňuje dosažení Full Scale DAC.
2. Datový typ je citlivý na přetečení, konstanty v podobě zlomku sice zvýší přesnost, ale je třeba zlomek nejdříve krátit a pak teprve použít v programu.
3. Pokud z nějakého důvodu dojde na dělení, bude to o hodně pomalejší než float. Toto se týká i použití konstant v podobě zlomku.
Chybný převod float na unsigned int si vysvětluji tím, že "soudruzi ze Švédska někde udělali chybu." Ta je možná u novějších verzí překladače opravena.
Nakonec jsem použil výpočet float a převod na signed long, kde mohu pro požadovaný rozsah 0 - 65535 detekovat přetečení nebo podtečení o 1.
hu