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);

Written by rony

3 komentáre

Keff

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?

cavo

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’. ;-)

Keff

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 :).

Comments are closed.