C++ round
27.1. Aktualizováno: Někdo mě emailem upozornil (za což děkuji), že moje řešení funguje pouze pro kladná čísla. Zde je řešení, které nabízí on (mírně upravené, aby fungovalo po pouhém Cut&Paste :) ):
#include <cmath>
int function round(double num) {
char sign = static_cast(num/fabs(num));
return static_cast<int>(sign* (fabs(num)+ 0.5));
}
Původně jsem zde vlastně měl funkci, která také fungovala dobře jak pro kladná, tak pro záporná čísla:
#include <cmath>
int function round(double num) {
return static_cast<int>(floor(num+0.5));
}
Nedá mi to a musím o tom napsat. C++ je jazyk, který moc v oblibě nemám a dost mě štve (hlavně teď, když musím programovat závěrečný příklad do kurzu C++ a potřeboval bych dělat úplně jiné věci)
Nejvíc mě asi štve, jak dlouho mi trvá, než najdu řešení nějaké chyby. Už už jsem se teď chtěl znova naštvat, jak je to C++ pitomé, že ani nemá zadefinovanou funkci round pro zaokrouhlení desetinného čísla na celé (pěkně od pěti desetin nahoru, jinak dolu), když mi google poradil parádní fintu. Stačí přičíst 0.5 a a vzít nejbližší nižší celé číslo (čili floor, které v C++ existuje).
Céčková funkce potom vypadá takto triviálně:
int round(double num) {
return (int)(num+0.5);
}
Jsem asi z řady těch hloupějších a pohodlnějších programátorů a vůbec by mi nevadilo, kdyby taková funkce byla také zahrnuta v knihovně (nejlépe i s možností nastavení přesnosti zaokrouhlování). Takové funkce podle mě k modernímu jazyku patří.
Toto považuji jako mnohem lepší komfort pro programátora.
Štítky: programování


Komentáře: 0:
Okomentovat
Přihlášení k odběru Komentáře k příspěvku [Atom]
<< Domovská stránka