perl6.suОсвоим perl6 к 2015 году!

функции для работы с числами


       Нашёлся ответ на вопрос как сделать число более целым. Itaque...
    
#!/usr/bin/perl6
my @list=(10,10.4,10.5,10.6,10.9999,11);
"origin floor ceiling round".say;
for @list {
	my $flo=$_.floor;
	my $cei=$_.ceiling;
	my $rou=$_.round;
	"$_ $flo $cei $rou".say;
	}
origin floor ceiling round
10 10 10 10
10.4 10 11 10
10.5 10 11 11
10.6 10 11 11
10.9999 10 11 11
11 11 11 11

       floor - это пол. То есть максимальное целое число, меньшее или равное данному.
       ceiling - это от ceil (покрывать). То есть минимальное целое число, покрывающее данное.
       round - округляет. Очевидно, чаще всего он и нужен.

Extra
http://feather.perl6.nl/syn/S32/Numeric.html   
# mutatio postrema: 26 Aug 2010


       abs - возвращает абсолютное значение числа, то есть отбрасывает минус, если надо.
    
#!/usr/bin/perl6
my @num=<-10 -5.5 -0.5 0 0.7 3 199>;
for @num { print abs($_),' '}
10 5.5 0.5 0 0.7 3 199 

       exp - экспонента какого-нибудь числа. То есть e в степени этого числа.
    
#!/usr/bin/perl6
my @num=<-1000000 0 1 2 10>;
for @num { .exp.say }
0
1
2.71828182845905
7.38905609893065
22026.4657948067

       log - логарифм. По умолчанию - натуральный (то есть по основанию e). Но после запятой можно поставить иное основание.
    
#!/usr/bin/perl6
my @num=<-10 0 1 10 1000>;
for @num { log($_,1000).say }
NaN
-Inf
0
0.333333333333333
1

       NaN - это что означает? Видимо, неопределенность или ошибку. -Inf - минус бесконечность.
       log10 - логарифм по основанию 10.
       sqrt - корень квадратный.
    
#!/usr/bin/perl6
my @num=<-10 0 1 100 1000>;
for @num { .sqrt.say }
NaN
0
1
10
31.6227766016838

       sign - возвращает знак числа.
    
#!/usr/bin/perl6
# my @num=<-10 0 1 100 Million>; # Раньше можно было указывать Million, сейчас нет
my @num=<-10 0 1 100 1000000>; 
for @num { .sign.say }
-1
0
1
1
1

       pi - возвращает число pi
       UPD. Как подсказал Александр Хижа NaN означает "not a number", не-число.

Extra
http://feather.perl6.nl/syn/S32/Numeric.html   
# mutatio postrema: 3 Oct 2012


       Для получения целого числа из нецелового существует ещё truncate, как оказывается.
    
#!/usr/bin/perl6
my @list=<-8 -7.9 -7.5 -7.2 -7 0 9 9.1 9.5 9.8 10>;
"origin truncate".say;
for @list {
	my $tru=$_.truncate;
	"$_ $tru".say;
	}
origin truncate
-8 -8
-7.9 -7
-7.5 -7
-7.2 -7
-7 -7
0 0
9 9
9.1 9
9.5 9
9.8 9
10 10

       Truncate просто обрезает нецелую часть числа. А floor для -7.9 даёт -8, потому что он ищет целые числа, меньше данного. То есть truncate действует как классический int.
# mutatio postrema: 30 Jan 2012

   функции для работы с числами, abs, ceiling, exp, floor, log, log10, pi, round, sign, sqrt, truncate      charta situs       nota XXIV, nota XXVIII, nota XXIX   

    RSS     stdin@perl6.su    © Alexius Karmanov, 2010-2011