it-swarm.com.ru

Как мне сделать целочисленное деление в Perl?

Каков хороший способ всегда делать целочисленное деление в Perl?

Например, я хочу:

real / int = int

int / real = int

int / int = int
53
Bryan Denny

Вы можете разыграть целые числа в Perl:

int(5/1.5) = 3;
40
Bryan Denny

Лексическая область действия integer pragma заставляет 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
80
Michael Ratanapintha

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.

5
Steve Schaefer

вы можете:

use integer;

это объясняется Майклом Ратанапинтой или же используется вручную:

$a=3.7;
$b=2.1;

$c=int(int($a)/int($b));

обратите внимание, "int" не является кастом. это функция для преобразования числа в целочисленную форму. это потому что Perl 5 не имеет отдельного целочисленного деления. Исключение составляют случаи, когда вы "используете целое число". Тогда вы потеряете настоящее разделение.

3
Znik

Надеюсь, что это работает

int (9/4) = 2.

Спасибо Манойкумар

0
Manoj Kumar