Question

Qu'est-ce qu'un bon moyen de toujours Bougez division entière en Perl?

Par exemple, je veux:

real / int = int

int / real = int

int / int = int
Était-ce utile?

La solution 2

Vous pouvez lancer ints en Perl:

int(5/1.5) = 3;

Autres conseils

integer pragma forces Perl pour utiliser l'arithmétique d'entier dans son champ d'application:

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) arrondira positifs vers les valeurs entier le plus proche. Arrondir est plus difficile.

Pour arrondir vers zéro:

int($x)

Pour les solutions ci-dessous, la phrase suivante:

use POSIX;

Pour arrondir: POSIX::floor($x)

Pour arrondir: POSIX::ceil($x)

Pour arrondir loin de zéro: POSIX::floor($x) - int($x) + POSIX::ceil($x)

Pour arrondir au nombre entier le plus proche: POSIX::floor($x+.5)

Notez que int($x+.5) échoue mal pour les valeurs négatives. int(-2.1+.5) est int(-1.6), qui est -1.

vous pouvez:

use integer;

il est expliqué par Michael Ratanapintha ou bien utiliser manuellement:

$a=3.7;
$b=2.1;

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

avis, 'int' est pas coulée. ceci est fonction de nombre entier de conversion de forme. c'est parce que Perl 5 ne possède pas la division entière séparée. exception est lorsque vous utilisez entier. Ensuite, vous perdrez la division réelle.

Espérons que cela fonctionne

int (9/4) = 2.

Merci Manoj Kumar

Par exemple, 9/4 = 2,25

int (9) / int (4) = 2

4.9 - reste / deniminator = 2

9/4-9% 4/4 = 2

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top