
функции для работы с числами
Нашёлся ответ на вопрос как сделать число более целым. 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>;
for @num { .sign.say } | | -1
0
1
1
0 |
pi - возвращает число pi UPD. Как подсказал Александр Хижа NaN означает "not a number", не-число.Extra http://feather.perl6.nl/syn/S32/Numeric.html
# mutatio postrema: 30 Jan 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 |
|