#!/usr/bin/perl use strict; use warnings; use POSIX; my $num = -1.2; my $rounded_pos = (POSIX::floor($num*2))/2; my $rounded_int = (int $num*2)/2; printf "Rounded is %.1f for %f using POSIX\n", $rounded_pos, $num; printf "Rounded is %.1f for %f using int\n", $rounded_int, $num; __END__ Output: Rounded is -1.5 for -1.200000 using POSIX Rounded is -1.0 for -1.200000 using int