Zaujímavý spôsob zaokrúhľovania v jazyku Perl
Perl je studňa bez dna. Nemá žiadnu phpidnú funkciu na zaokrúhľovanie a tak si musíme pomáhať vlastnými funkciami. Lenže dnes som natrafil na takúto zvrhlosť:
$prvy = 3; $druhy = 9;
$vysledok = sprintf „%.1f“, ($prvy/$druhy);
print „Vysledok: $vysledok“;
Miesto 1f
v druhom riadku (čo je mimochodom _ten_ vzorec) môžeme vkladať počet desatinných miest, na ktoré sa má zaokrúhliť.
Eurokalkulačka: Perl a PHP
Základný vzorec je
* PHP: $euro = round(($skk / 30.126),2);
* Perl: $euro = sprintf "%.2f", ($skk / 30.126);
Perl neznám, ale dočetl jsem se že int() odstraňuje desetinná čísla, takže by tu měl fungovat starý trik:
f = 4.51
i = int(f + 0.5)
Je to tak?
Keff: Je to tak, ale platí to len pre kladné čísla. A ‚int‘ ma aj ine problemy. Podľa manuálovej stránky (man perlfunc) sa doporučuje použivať ‚sprintf‘, ‚printf‘, ‚POSIX::floor‘, alebo ‚POSIX::ceil‘
Málokedy potrebujem zaukrúhlovať a keď náhodou, tak som zatiaľ skoro vždy použil ‚int‘. ;-)
cavo: To máš pravdu, uznávám… stejně mi přijde použití sprintf a automatické konverze jako neuvěřitelně výkonově náročný hack, ale asi bych si na to u dynamických jazyků už měl zvyknout :).