Jak na funkci arc sinus v shellu ?

Tomas Mraz tomm na kamarad.cz
Pondělí Srpen 16 09:01:46 CEST 1999


> Kazdopadne jsem narazil na zajimavou vec prave s funkci asin (acos).
> Mam promennou float kterou v cyklu zvysuju o 0.02 . A kdyz je v te
> promenne 1.000000 tak asin na tom chcipne - vypise +NAN . Kdyz si tu
> promennou vytisknu - pres printf("%f") tak vypise 1.000000 . Kdyz
> zadam asin(1.000000) tak to funguje - vrati to Pi. Neni to divne ??

To je jasne, je to dano binarni reprezentaci cisel s pohyblivou desetinou
carkou. Pokud byste chtel, aby se vsechny vypocty v pohyblive desetinne
carce chovaly presne tak, jak by je pocital clovek rucne, musel byste mit
necela cisla reprezentovana v BCD kodu a vsechny vypocty v tomto kodu
provadet. To delaji napr. databazove SQL stroje. Ono totiz v bankovnich
vypoctech by dost vadilo, kdyby pri kazdem pricteni 0.02 doslo k chybe.

Jako ridici promenou cyklu je treba pouzivat cele cislo a to pak uvnitr
cyklu nasobit prevodni konstantou.

Tedy:


int i;
for(i = 0; i <= 100; i += 2){ printf("%f\n", ((float)i)*0.01) }

Tom Mraz




Další informace o konferenci Linux