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
War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top