Portál AbcLinuxu, 9. května 2025 00:22

Dotaz: Zaokrouhleni v C

22.3.2009 22:17 Nicoolas_Doe
Zaokrouhleni v C
Přečteno: 4142×
Odpovědět | Admin
Muze mi nekdo poradit, jak se da zaokrouhlit double na tri desetinna mista? Predem dik za pomoc.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.3.2009 22:26 vencas | skóre: 32
Rozbalit Rozbalit vše Re: Zaokrouhleni v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
double d=3.1415926535897931,d3;
d3=(double)((long)(d*1000-.5))/1000.; // d3=3.141
22.3.2009 22:31 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Zaokrouhleni v C
IMHO by to melo byt
d3=(double)((long)(d*1000+.5))/1000.; // d3=3.142
Neni to moc videt, tak to jeste zkusim popsat - ta 0.5 by se mela pricitat, nikoli odecitat.

Dejv
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
22.3.2009 22:35 Nicoolas_Doe
Rozbalit Rozbalit vše Re: Zaokrouhleni v C
Ani nevis, jak moc jsi mo pomohl. Dekuju
22.3.2009 22:40 Nicoolas_Doe
Rozbalit Rozbalit vše Re: Zaokrouhleni v C
co vlastne dela +.5? pricita to jednu polovinu? jestli ano, kam se pak ztatej ty ostatni desetinny mista?
22.3.2009 23:44 vencas | skóre: 32
Rozbalit Rozbalit vše Re: Zaokrouhleni v C

konverze (int) zkrouhne všechno za desetinnou čárkou, takže z 3.8 by to udělalo 3. Přičtením (díky za opravu) se 3.8+.5=4.3 zaokrouhlí na 4. Takže 2.5 včetně až 3.5 exclusive na 3 atd, jak se to běžně dělá.

23.3.2009 06:15 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Zaokrouhleni v C
No nevím ... na nějaká 3 desetinná místa bych se u floatů vůbec nespoléhal! Na co je to zaokrouhlení potřeba? Jestli jen na výpis, tak bych použil formátovací řetězce printf. Jestli chcete skutečně pracovat jen s přesností na 3 desetinná místa, tak bych použil fixed-point, tj. měl to číslo normálně v int (nebo long, ...) a interně si řekl že to vlastně reprezentuje tu veličinu krát 1000...
In Ada the typical infinite loop would normally be terminated by detonation.
26.3.2009 11:51 Nicoolas_Doe
Rozbalit Rozbalit vše Re: Zaokrouhleni v C
Taky dobrej napad. Moc dik.
22.3.2009 22:35 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Zaokrouhleni v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Někdy může stačit *1000, round, /1000. Někdy samozřejmě ne.

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.