Wie soll ich tun Integer-Division in Perl?
-
22-08-2019 - |
Frage
Was ist ein guter Weg, um immer tut Integer-Division in Perl?
Zum Beispiel, ich will:
real / int = int
int / real = int
int / int = int
Lösung 2
Sie können Ints in Perl werfen:
int(5/1.5) = 3;
Andere Tipps
Die lexikalische integer
Pragma Kräfte Perl Integer-Arithmetik in ihrem Umfang zu verwenden:
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)
rundet positive Werte in Richtung auf die nächste ganze Zahl. Aufrunden ist härter.
Zur Abrundung in Richtung Null:
int($x)
Für die folgenden Lösungen, die folgende Erklärung:
use POSIX;
Um abrunden: POSIX::floor($x)
Zur Abrundung: POSIX::ceil($x)
Zur Abrundung von Null weg: POSIX::floor($x) - int($x) + POSIX::ceil($x)
auf die nächste ganze Zahl abzurunden: POSIX::floor($x+.5)
Beachten Sie, dass int($x+.5)
schlecht für negative Werte ausfällt. int(-2.1+.5)
ist int(-1.6)
, die -1 ist.
Sie können:
use integer;
es wird erklärt, von Michael Ratanapintha oder auch manuell verwenden:
$a=3.7;
$b=2.1;
$c=int(int($a)/int($b));
Hinweis, 'int' Casting nicht. Dies ist die Funktionsnummer auf ganzzahlige Form umzuwandeln. dies liegt daran, dass Perl 5 nicht getrennte Integer-Division hat. Ausnahme ist, wenn Sie ‚Integer verwenden‘. Dann werden Sie echte Teilung verlieren.
Hoffe, es funktioniert
int (9/4) = 2.
Danke Manojkumar
Eg 9/4 = 2,25
int (9) / int (4) = 2
9/4 - Rest / deniminator = 2
9 / 4-9% 4/4 = 2