Neviete mi niekto poradit ako zaokruhlovat realne cisla na 3 desatinne miesta? Lebo algorytmus ktory mam mi blbne pri cisle 0,0005. Namiesto toho aby som mal vysledok 0,001 mi stale vyhadzuje 0,0000. Vopred dakiujem
Fórum › C / C++
Zaokruhlovanie
V C++ standardně "typické" zaokrouhlování není. Obsahuje pouze funkce ceil a floor, které zaokrouhlují nahoru, resp. dolů, na celá čísla. S použitím funkce floor však můžeš zaokrouhlit na libovolná desitinná místa:
double zaokrouhlene = floor(cislo*pow(10,n)+0.5)/pow(10, n)
kde n je počet desetinných míst.
EDIT: Zapomněl jsme dodat, že tento postup punguje pouze pro kladná číasla. Pr záporná bys musel použít ceil a -0.5.
Dokumentace k STL používá pro zaokrouhlování stringstream:
double round(double val, int precision)
{
std::stringstream s;
s << std::setprecision(precision) << std::setiosflags(std::ios_base::fixed) << val;
s >> val;
return val;
}
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 35 hostů
Moderátoři diskuze