0

I want to round the numeric data by removing the decimal part. I dont want to use "sprintf". Is there any other methods to do in perl. Please help me with this. For instance, if the value is 4.5 then output should be 5 and for 4.2 its 4 and 4.7 its 5 respectively. Please help me with this issue.

1 Answers1

0

You can do this with the int keyword.

my $value = 4.5;
print int( $value + 0.5 );

However, the int perl documentation warns against using int for rounding:

Returns the integer portion of EXPR. If EXPR is omitted, uses $_. You should not use this function for rounding: one because it truncates towards 0, and two because machine representations of floating-point numbers can sometimes produce counterintuitive results. For example, "int(-6.725/0.025)" produces -268 rather than the correct -269; that's because it's really more like -268.99999999999994315658 instead. Usually, the "sprintf", "printf", or the "POSIX::floor" and "POSIX::ceil" functions will serve you better than will int().

mttrb
  • 8,297
  • 3
  • 35
  • 57