Pergunta

O que é uma boa maneira de sempre fazer inteiro divisão em Perl?

Por exemplo, eu quero:

real / int = int

int / real = int

int / int = int
Foi útil?

Solução 2

Você pode lançar ints em Perl:

int(5/1.5) = 3;

Outras dicas

O escopo léxico integer pragma forças Perl para uso inteiro aritmética em seu escopo:

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) vai rodada positivo valores em direção ao número inteiro mais próximo. Arredondamento para cima é mais difícil.

Para redonda em direção a zero:

int($x)

Para as soluções abaixo, incluir a seguinte declaração:

use POSIX;

Para baixo rodada: POSIX::floor($x)

Para se rodada: POSIX::ceil($x)

Para completar longe de zero: POSIX::floor($x) - int($x) + POSIX::ceil($x)

Para off rodada para o número inteiro mais próximo: POSIX::floor($x+.5)

Note que int($x+.5) falhar mal para valores negativos. int(-2.1+.5) é int(-1.6), que é -1.

Você pode:

use integer;

é explicado por Michael Ratanapintha ou utilização outra manualmente:

$a=3.7;
$b=2.1;

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

aviso prévio, 'int' não está lançando. esta é função para converter a forma número inteiro. isso é porque Perl 5 não tem divisão inteira separado. exceção é quando você usar um inteiro ". Então você vai perder divisão real.

Hope funciona

int (9/4) = 2.

Graças Manojkumar

Por exemplo, 9/4 = 2,25

int (9) / int (4) = 2

4/9 - restante / deniminator = 2

9 na / 4-9% 4/4 = 2

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top