Wenn ich in Sprachen wie C oder Python eine Ganzzahl durch eine Ganzzahl teile, erhalte ich eine Ganzzahl:
>>> 8/3
2
Aber wenn ich in PHP eine Ganzzahl durch eine andere Ganzzahl durch teile /
, bekomme ich manchmal einen Gleitkommawert:
php > var_dump(6/3);
int(2)
php > var_dump(8/3);
float(2.6666666666667)
Ich würde gerne wie in Python oder C teilen, so dass 8/3 2 ist. Wie kann ich das in PHP machen?
6
, was brauchen Sie 5 oder 6?ceil()
undfloor()
sind die Funktionen, die anders aufrunden .Antworten:
Verwenden Sie die
round()
Funktion, um einen ganzzahligen gerundeten Wert zu erhalten.round(8 / 3); // 3
oder
Verwenden Sie die
floor()
Funktion, um einen ganzzahligen Wert abzurufenfloor(8 / 3); // 2
quelle
floor()
einefloat
NICHT-Ganzzahl zurückgegeben wird, also erhalten Sie2.0
und nicht2
. Wirf das Ergebnis, um sicherzustellen, dass du eine ganze Zahl bekommst:(int)floor(8/3)
intdiv
), während Python gegen negative Unendlichkeit abschneidet.In PHP 7 gibt es eine intdiv- Funktion, die genau das tut, was Sie wollen.
Verwendung:
intdiv(8, 3);
Rückgabe
2
.quelle
In PHP gibt es keinen ganzzahligen Divisionsoperator. 1/2 ergibt den Float 0,5. Der Wert kann in eine Ganzzahl umgewandelt werden, um ihn nach unten zu runden, oder die Funktion round () bietet eine genauere Kontrolle über das Runden.
var_dump(25/7); // float(3.5714285714286) var_dump((int) (25/7)); // int(3) var_dump(round(25/7)); // float(4)
PhP Handbuch
quelle
benutze das....
intval(1700000 / 300000 )...
Dies gibt den ganzzahligen Wert zurück.
quelle
(int)(1700000 / 300000);
Verwenden Sie Typ Casting.
quelle
(0.1 + 0.7) * 10
ist7.99999999999999911182158029987476766109466552734375
. Es ist völlig richtig, dass eine(int)
Umwandlung diesen Wert auf 7 abschneidet. Wenn Sie eine Ganzzahl durch eine andere Ganzzahl teilen, wie dies bei der Frage und Antwort hier der Fall ist, kann ein solcher Gleitkommafehler das Ergebnis nach dem Abschneiden nicht ändern.Es gibt verschiedene Möglichkeiten, eine Ganzzahldivision in PHP durchzuführen. Die Sprache hat keinen Operator für die Ganzzahldivision, aber es gibt verschiedene Möglichkeiten, den Gleitkommaquotienten auf eine Ganzzahl zu runden:
<?php $pos = 1; $neg = -1; $divisor = 2; // No rounding (float division) var_dump($pos / $divisor); // 0.5 (float) var_dump($neg / $divisor); // -0.5 (float) // Round toward zero (like C integer division) var_dump((int)($pos / $divisor)); // 0 (int) var_dump((int)($neg / $divisor)); // 0 (int) // Round half away from zero var_dump(round($pos / $divisor)); // 1 (float) var_dump(round($neg / $divisor)); // -1 (float) // Round down var_dump(floor($pos / $divisor)); // 0 (float) var_dump(floor($neg / $divisor)); // -1 (float) # And on PHP 7 you can round toward zero with intdiv(): var_dump(intdiv($pos, $divisor)); // 0 (int) var_dump(intdiv($neg, $divisor)); // 0 (int) Rounded toward zero
Unter PHP 7 können Sie
intdiv($p, $q)
die Ganzzahldivision direkt durchführen. Dies entspricht(int)($p / $q)
PHP 5.quelle
Sie können die Kurzform verwenden, indem Sie am Ende | 0 hinzufügen
8/3 | 0
quelle
Für PHP 7 versuchen Sie
intdiv()
Funktion:<?php $dividend = 19; $divisor = 3; echo intdiv($dividend, $divisor); ?>
Für ältere Versionen von PHP:
<?php // Convert $total_minutes to hours and minutes. $total_minutes = 640; $minutes = $total_minutes % 60; $hours = ($total_minutes - $minutes) / 60; echo "Time taken was $hours hours $minutes minutes"; ?>
quelle
Für PHP Version 7 =>
intdiv(a,b)
Und für Versionen unter 7 (wie 5.6) =>
(int)floor(abs(a/b))
quelle