web-dev-qa-db-fra.com

Comment convertir une valeur flottante en entier en php?

Je veux convertir la valeur flottante (par exemple: 1.0000124668092E + 14) en entier en php, quelle est la meilleure méthode pour cela dans php.output devrait être "100001246680920"

23
sajith

Que voulez-vous dire par conversion?

  • casting *: (int) $float ou intval($float)
  • troncature: floor($float) (bas) ou ceil($float) (haut)
  • arrondi: round($float) - a des modes supplémentaires, voir les constantes PHP_ROUND_HALF_...

* : le cast a une chance, que les valeurs flottantes ne puissent pas être représentées en int (trop grand ou trop petit) , f.ex. dans ton cas.

PHP_INT_MAX : Le plus grand entier pris en charge dans cette version de PHP. Généralement int (2147483647).

Mais, vous pouvez utiliser les extensions BCMath ou GMP pour gérer ces grands nombres. (Les deux sont limités, il vous suffit d'activer ces extensions)

45
pozs

Utilisez round()

$float_val = 4.5;

echo round($float_val);

Vous pouvez également définir des paramètres pour la précision et le mode d'arrondi, pour plus d'informations

Mise à jour (selon votre question mise à jour):

$float_val = 1.0000124668092E+14;
printf('%.0f', $float_val / 1E+14); //Output Rounds Of To 1000012466809201
13
Mr. Alien

Il y a toujours intval () - Je ne sais pas si c'est ce que vous cherchiez ...

exemple: -

$floatValue = 4.5;
echo intval($floatValue);    // Returns 4

Il n'arrondira pas la valeur à un entier, mais supprimera les chiffres décimaux et finaux et renverra l'entier avant la décimale.

Voici une documentation pour cela: - http://php.net/manual/en/function.intval.php

4
JamLizzy101

Utilisez les méthodes round, floor ou ceil pour l'arrondir à l'entier le plus proche, avec intval() qui est limité.

http://php.net/manual/en/function.round.php

http://php.net/manual/en/function.ceil.php

http://php.net/manual/en/function.floor.php

1
fullybaked