Portál AbcLinuxu, 13. května 2025 01:03

Dotaz: c funkcia round od polovice nadol

3.5.2011 17:40 peter
c funkcia round od polovice nadol
Přečteno: 864×
Odpovědět | Admin
Ahoj, viete mi niekto poradit funkciu jazyka c, ktora zaokruhluje nasledovne:
1.5 po zaokruhleni = 1
1.49999999 po zaokruhleni = 1
1.50000001 po zaokruhleni = 2

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.5.2011 17:59 l4m4
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jelikož 0.5 je přesné číslo, tak funguje toto:

ceil(x - 0.5)

Existují tedy možná dvě konkrétní čísla (na krajích representovatelnosti polovin), kde to zaokrouhlí jinak, to teď z hlavy nevím.
Emch avatar 3.5.2011 21:49 Emch | skóre: 4 | blog: Machal
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Odpovědět | | Sbalit | Link | Blokovat | Admin
nebo si udělej vlastní fci

int zaokrouhli(float cislo){

if( (cislo - (int) cislo) > 0.5 )

return (int) cislo + 1;

else

return (int) cislo;

}

nebo sem to jednou dělal podobně, ale přes makro, vypadalo to nějak takhle (když to upravím na tenhle příklad) #define round(A) ((A - (int) A) <= 0.5 ) ? floor(A) : ceil(A)
Je to tak jednoduchý, že to zvládne i fotbalista.
3.5.2011 22:08 l4m4
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Tak schválně, na jaké číslo se ti takhle zaokrouhlí 17179869184.4?
Emch avatar 9.5.2011 22:01 Emch | skóre: 4 | blog: Machal
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Řekl bych, že to přeteče a vypíše nějakou blbost :-)
Je to tak jednoduchý, že to zvládne i fotbalista.
4.5.2011 16:34 VM
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Odpovědět | | Sbalit | Link | Blokovat | Admin
co takhle ceil(x-0.5) ?
11.5.2011 19:53 perdy | skóre: 5 | blog: stdout
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ďalšou možnosťou je skúsiť vstup vynásobiť dvoma, zaokrúhliť nadol a rozhodnúť sa podľa zvyšku po delení dvoma.

Opäť sa bude treba pozrieť na chovanie "na hrane".
ln -s vim emacs
11.5.2011 22:09 jekub
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Ďalšou možnosťou je skúsiť vstup vynásobiť dvoma, zaokrúhliť nadol a rozhodnúť sa podľa zvyšku po delení dvoma.
11.5.2011 22:15 perdy | skóre: 5 | blog: stdout
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Prepáč, dneska mi to nemyslí a tvoj komentár nechápem. Môžeš použiť menej inotajov?
ln -s vim emacs
12.5.2011 09:24 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Zřejmě si nevšiml, že „zaokrouhlit“ a „zaokrouhlit dolů“ (neboli získat celou část) jsou různé operace, přičemž „zaokrouhlit dolů“ umí skoro každý programovací jazyk už v základu.
20.5.2011 11:51 ---- | skóre: 33 | blog:
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Odpovědět | | Sbalit | Link | Blokovat | Admin
takové zaokrouhlování je zrůdnost, proč proboha?
Toman avatar 21.5.2011 00:41 Toman | skóre: 29 | blog: Tomanův blog | Kostelec nad Orlicí
Rozbalit Rozbalit vše Re: c funkcia round od polovice nadol
Asi programuje pokladnu do Kauflandu :-) Není to jedno? Ptá se, jak to vyřešit, může být jedno, k čemu to poslouží - reakce na „zrůdnost“ :-D

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.