Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: how to always round up in perl?

by philipbailey (Curate)
on Feb 25, 2011 at 09:10 UTC ( [id://890147]=note: print w/replies, xml ) Need Help??


in reply to how to always round up in perl?

Or if you do not want to import a mass of functions into your namespace from the POSIX module, just do this:

my $n = 3.3; my $ceiling = int($n + 1);

(Update) Above is incorrect, as pointed out by others. This works:

my $ceiling = ($n == int $n) ? $n : int($n + 1);

Replies are listed 'Best First'.
Re^2: how to always round up in perl?
by chrestomanci (Priest) on Feb 25, 2011 at 09:19 UTC

    That fails if $n is allready an integer. You would need something like:

    my $n = 3.0; my $ceiling = int($n); $ceiling += 1 if $ceiling != $n;

    Or as a one liner:

    my $ceiling = int($n) + ($n != int($n));
      They also fail with negative non-integers.
      perl -MPOSIX=ceil -e "$n=-2.1; print($n, ' POSIX: ', ceil($n))" # -2.1 POSIX: -2 perl -e "$n=-2.1; print($n, ' other: ', int($n) + ($n != int($n)))" # -2.1 other: -1
Re^2: how to always round up in perl?
by Ratazong (Monsignor) on Feb 25, 2011 at 09:18 UTC
    Which I wouldn't recommend, because it fails in the following situation (with $n2) ...
    my $n1 = 3.3; my $n2 = 4; print int($n1 + 1)," ",int($n2 + 1), "\n";
Re^2: how to always round up in perl? (selective import)
by toolic (Bishop) on Feb 25, 2011 at 14:25 UTC
    if you do not want to import a mass of functions into your namespace from the POSIX module
    ... just do this:
    use warnings; use strict; use POSIX qw(ceil); for (3.3, 3.6, 3003.3) { print $_, "\t", ceil($_), "\n"; } __END__ 3.3 4 3.6 4 3003.3 3004
    According to How to Import, this selectively imports only the ceil function.

    Alternately, you could import nothing and call the function using POSIX::ceil.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://890147]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (2)
As of 2024-03-19 05:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found