8. júl 2008 14.35 TECHIT
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);
pošli do vybrali.sme.skKomentáre k obsahu príspevku:
Chcete napísať nesúhlasný komentár? Prosím, zvážte nasledovné: je šanca, aby niekto zmenil Váš názor alebo chcete iba trvať na svojom? V prvom prípade sú Vaše slová vítané.
Chcete urážať? Nepíšte sem urážky a invektívy. Každý, kto na týchto stránkach publikuje je automaticky (doplňte vhodný výraz). Takže už to všetci vopred vieme, čo si myslíte a preto sa neopakujte.
Podmienky pre Váš komentár: Tlačidlo na odoslanie stlačte 1x, v texte nenadávajte, nevkladajte linky za účelom SEO, nepropagujte, Váš text musí mať zmysel, neporušujete vlastnícke práva majiteľa tejto stránky, ste pravidelný čitateľ tejto stránky, komentujete príspevok (nie erupcie Slnka) a nemýlite si komentáre s kvákacími fórami a chatom. Používajte formátovanie TEXTILE najmä na odkazy! Rozumiete tomuto poučeniu? áno, nie alebo Týmto sa pošle komentár?
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 :).