Автор Тема: Матем. функция!  (Прочитано 5052 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Труба-Дур

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 39
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Матем. функция!
« : 17 Сентября 2002, 11:36:00 »
Заранее извените что такой вопрос.
Но сколько я не сикал я так и не нашел математич. функцию, которая округляет число до большего значения...
например 2.1 до 3-х или 2.9 до 3!
я могу конечно написать свою функц которая будет это делать, но может всётаки есть эта функция?:)

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Матем. функция!
« Ответ #1 : 17 Сентября 2002, 11:50:56 »
perldoc -q round
2B OR NOT 2B = FF

Оффлайн Труба-Дур

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 39
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Матем. функция!
« Ответ #2 : 17 Сентября 2002, 12:15:57 »
А разве round так округляет, я думал он стандартно округяет !

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Матем. функция!
« Ответ #3 : 17 Сентября 2002, 14:26:02 »
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.

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Матем. функция!
« Ответ #4 : 17 Сентября 2002, 17:01:46 »
use POSIX qw(ceil);
print ceil(3.7);
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Труба-Дур

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 39
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Матем. функция!
« Ответ #5 : 18 Сентября 2002, 07:20:30 »
Serchey круто :)
GotZfild а POSIX стандарт или как?:)

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Матем. функция!
« Ответ #6 : 18 Сентября 2002, 12:55:40 »
POSIX - стандарт для UNIX, а под Виндузу... ?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Матем. функция!
« Ответ #7 : 18 Сентября 2002, 13:16:35 »
Цитировать
а под Виндузу...

Он же. Аки модуль.
The documentations is your friend

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Матем. функция!
« Ответ #8 : 19 Сентября 2002, 22:18:37 »
Цитировать
А разве round так округляет, я думал он стандартно округяет !

Я не предлагал функцию round.:)
В том факе, который perldoc находит по этому запросу есть про round, flor и ceil.
2B OR NOT 2B = FF

Зарегистрироваться?

  • Гость
Матем. функция!
« Ответ #9 : 29 Сентября 2002, 20:16:29 »
А так нельзя?




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;
}

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Матем. функция!
« Ответ #10 : 29 Сентября 2002, 23:32:51 »
нет

Ленивый гость

  • Гость
Матем. функция!
« Ответ #11 : 30 Сентября 2002, 22:50:26 »
Почему? Неужели не будет работать?

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Матем. функция!
« Ответ #12 : 01 Октября 2002, 10:32:21 »
Ленивый гость, а ты пробовал? Да и потом - тут не код, а непонятно что. (хотя идея есть)

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Матем. функция!
« Ответ #13 : 01 Октября 2002, 17:19:04 »
А если так :

sub okruglim{
if($number > int($number)){$number=(int($number)+1)}
return $number;
}
Все болезни от нервов, только сифилис от удовольствия

Оффлайн st_steev

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Матем. функция!
« Ответ #14 : 01 Октября 2002, 19:01:18 »
А если так?:)
$C="2.9";
$C=sprintf("%.0f",$C);
print "$C";

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28