52 votes

Quelle est la meilleure façon d'obtenir la partie fractionnaire d'un flottant en PHP ?

Comment trouver la partie fractionnaire d'un nombre à virgule flottante en PHP ?

Par exemple, si j'ai la valeur 1.25 Je veux revenir. 0.25 .

78voto

nlucaroni Points 21502
$x = $x - floor($x)

0 votes

Cela ne fonctionnera pas si vous avez affaire à un nombre flottant comme = 0,25.

5 votes

@primo : mettez votre commentaire dans une réponse, vous méritez d'augmenter votre réputation pour cela ! :)

13 votes

En tant que commentaire de la réponse acceptée, il a plus de chances d'être vu, et est donc plus utile.

15voto

Alan Storm Points 82442

N'oubliez pas que l'arithmétique en virgule flottante ne peut pas être fiable à 100 %. Si cela vous préoccupe, vous voudrez bien vous pencher sur l'outil de calcul de l'arithmétique en virgule flottante. BCMath Mathématiques à précision arbitraire fonctions.

$x = 22.732423423423432;
$x = bcsub(abs($x),floor(abs($x)),20);

Vous pouvez également pirater la chaîne vous-même

$x = 22.732423423423432;    
$x = strstr ( $x, '.' );

0 votes

Dans un nombre comme 10000000000000.00011111 cela ne fonctionne pas :(

9voto

Michael Fenwick Points 506

La réponse fournie par nlucaroni ne fonctionne que pour les nombres positifs. Une solution possible qui fonctionne aussi bien pour les nombres positifs que négatifs est la suivante :

$x = $x - intval($x)

1 votes

Juste une remarque : le typage en (int) serait plus rapide.

9voto

Jeremy Ruten Points 59989

Si le nombre est négatif, vous devrez le faire :

 $x = abs($x) - floor(abs($x));

3voto

Ethan Gunderson Points 2254

Mes compétences en PHP sont insuffisantes, mais vous pourriez déduire le résultat d'un plancher du nombre original.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X