Comment dois-je faire integer division en Perl?
Ce qui est une bonne façon de toujours n'division entière en Perl?
Par exemple, je veux:
real / int = int
int / real = int
int / int = int
Vous devez vous connecter pour publier un commentaire.
Le lexicalement étendue
integer
pragma forces de Perl pour utiliser l'arithmétique des nombres entiers dans son champ d'application:Vous pouvez lancer ints en Perl:
int(-6.725/0.025)
est -268 etPOSIX::floor(-6.725/0.025)
est -269 voir perldocPOSIX::floor
.int(5/1.5)
en C++ ou(int)(5/1.5)
en C ou5//1.5
en Python. P. S. Ah! L'exception!use integer;
en perl ... mais c'est le cerveau endommagé.int(x+.5)
rond positif valeurs vers l'entier le plus proche. L'arrondissement est plus difficile.À tour vers zéro:
int($x)
Pour les solutions ci-dessous, comprennent la déclaration suivante:
use POSIX;
D'arrondir à la baisse:
POSIX::floor($x)
À tour:
POSIX::ceil($x)
À tour loin de zéro:
POSIX::floor($x) - int($x) + POSIX::ceil($x)
Pour arrondir à l'entier le plus proche:
POSIX::floor($x+.5)
Noter que
int($x+.5)
ne parvient pas mal pour les valeurs négatives.int(-2.1+.5)
estint(-1.6)
, qui est de -1.int
tours à zéro, alors que la normale arrondi vers même. Exécuterperl -le 'printf "int(%s) is %d, round(%s) is %.0f;\n", ($_+0.5)x4 for -10..10'
et vous verrez des choses comme int(-3.5) est -3, round(-3.5) est de -4; int(-2.5) est -2, round(-2.5) est -2; int(-1.5) est de -1, round(-1.5) est -2; int(-0.5) est 0, round(-0.5) est à 0; int(0,5) est 0, round(0,5) est 0; int(1.5) est de 1, round(1.5) est de 2; int(2.5) est de 2, round(2.5) est de 2; int(3.5) est de 3, round(3.5) est de 4; int(4.5) est de 4, round(4.5) est de 4;vous pouvez:
il est expliqué par Michael Ratanapintha ou d'utiliser manuellement:
avis, " int " n'est pas de la coulée. c'est la fonction de conversion de nombre entiers de la forme.
c'est parce que Perl 5 il n'y a pas de division entière. exception est lorsque vous utilisez entier'. Ensuite, vous allez perdre division réelle.
Espérons que cela fonctionne
int(9/4) = 2.
Merci
Manojkumar
Par exemple
9 /4 = 2.25
int(9) /int(4) = 2
9 /4 - reste /deniminator = 2
9 /4 - 9 % 4 /4 = 2