Comment dois-je faire la division entière en Perl?
-
22-08-2019 - |
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
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