Как я должен выполнять целочисленное деление в Perl?
-
22-08-2019 - |
Вопрос
Что такое хороший способ всегда есть ли целочисленное деление в Perl?
Например, я хочу:
real / int = int
int / real = int
int / int = int
Решение 2
Вы можете использовать целые числа в Perl:
int(5/1.5) = 3;
Другие советы
Лексически ограниченный integer
прагма заставляет Perl использовать целочисленную арифметику в своей области видимости:
print 3.0/2.1 . "\n"; # => 1.42857142857143
{
use integer;
print 3.0/2.1 . "\n"; # => 1
}
print 3.0/2.1 . "\n"; # => 1.42857142857143
int(x+.5)
будет круглый положительный значения, приближенные к ближайшему целому числу.Округлять дела сложнее.
Округлить до нуля:
int($x)
Для приведенных ниже решений включите следующее утверждение:
use POSIX;
Округлить в меньшую сторону: POSIX::floor($x)
Чтобы собрать: POSIX::ceil($x)
Для округления от нуля: POSIX::floor($x) - int($x) + POSIX::ceil($x)
Округлить до ближайшего целого числа: POSIX::floor($x+.5)
Обратите внимание , что int($x+.5)
плохо работает при отрицательных значениях. int(-2.1+.5)
является int(-1.6)
, что равно -1.
ты можешь:
use integer;
это объясняется Майклом Ратанапинтхой или же используйте вручную:
$a=3.7;
$b=2.1;
$c=int(int($a)/int($b));
обратите внимание, 'int' - это не приведение.это функция для преобразования числа в целочисленную форму.это связано с тем, что Perl 5 не имеет отдельного целочисленного деления.исключение составляет случай, когда вы "используете integer".Тогда вы потеряете реальное разделение.
Надеюсь, это сработает
int(9/4) = 2.
Спасибо Маноджкумар
Например 9 / 4 = 2.25
int(9) / int(4) = 2
9/4 - остаток / определитель = 2
9 /4 - 9 % 4 / 4 = 2