Forum Webscript.Ru
Программирование => Perl => Тема начата: Труба-Дур от 17 Сентября 2002, 11:36:00
-
Заранее извените что такой вопрос.
Но сколько я не сикал я так и не нашел математич. функцию, которая округляет число до большего значения...
например 2.1 до 3-х или 2.9 до 3!
я могу конечно написать свою функц которая будет это делать, но может всётаки есть эта функция?:)
-
perldoc -q round
-
А разве round так округляет, я думал он стандартно округяет !
-
sub trunc {
my $num = shift;
my $dig = shift;
$dig = 2 unless defined $dig;
my $tmp_num;
if($num =~ /\\./){
if($dig){
if(length(substr($num,(index($num,\'.\')+1))) > $dig){
$tmp_num = substr($num,0,(index($num,\'.\')+$dig+1));
$dig = substr($num,(index($num,\'.\')+$dig+1),1);
if($dig >= 5){
my $tmp = "0.".("0" x (length(substr($tmp_num,index($tmp_num,\'.\')))-2));
$tmp.="1";
$tmp_num+=$tmp;
}
$num = $tmp_num;
}
} else {
$dig = substr($num,(index($num,\'.\')+1),1) >= 5?1:0;
$num =~ s/\\..*$//;
$num+=$dig;
}
}
return $num;
}
- тоже вариант.
Узадж: trunc($num[,n]), где n - до какого разряда после запятой нужно округлить. По умолчанию n = 2.
-
use POSIX qw(ceil);
print ceil(3.7);
-
Serchey круто :)
GotZfild а POSIX стандарт или как?:)
-
POSIX - стандарт для UNIX, а под Виндузу... ?
-
а под Виндузу...
Он же. Аки модуль.
-
А разве round так округляет, я думал он стандартно округяет !
Я не предлагал функцию round.:)
В том факе, который perldoc находит по этому запросу есть про round, flor и ceil.
-
А так нельзя?
sub floor
{
return int(shift);
}
sub ceil
{
my $n = shift;
my $i = int $n; #integer
my $r = $n - $i; #remainder
return $i + $r>0?1:0;
}
sub round
{
my $n = shift;
my $i = int $n; #integer
my $r = $n - $i; #remainder
return $i + $r*10%10>=5?1:0;
}
-
нет
-
Почему? Неужели не будет работать?
-
Ленивый гость, а ты пробовал? Да и потом - тут не код, а непонятно что. (хотя идея есть)
-
А если так :
sub okruglim{
if($number > int($number)){$number=(int($number)+1)}
return $number;
}
-
А если так?:)
$C="2.9";
$C=sprintf("%.0f",$C);
print "$C";