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

Môže sa Vám ešte páčiť...

3 komentáre

  1. Keff píše:

    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?

  2. cavo píše:

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

  3. Keff píše:

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