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

3 odpovede na Zaujímavý spôsob zaokrúhľovania v jazyku Perl

  1. Keff povedal:

    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 povedal:

    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 povedal:

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