6 votes

Transforme une chaîne numérique en données de type flottant

Quelle est la commande PHP qui fait quelque chose de similaire à intval() mais pour les décimales ?

Par exemple, j'ai la chaîne "33.66" et je veux la convertir en valeur décimale avant de l'envoyer à MSSQL.

18voto

Bill Karwin Points 204877

Et si floatval() ?

$f = floatval("33.66");

Vous pouvez gagner quelques nanosecondes sur les conversions de type en utilisant le casting au lieu d'un appel de fonction. Mais ceci est du domaine de la micro-optimisation, donc ne vous inquiétez pas à moins que vous ne fassiez des millions de ces opérations par seconde.

$f = (float) "33.66";

Je recommande également d'apprendre à utiliser sscanf() parce que parfois c'est la solution la plus pratique.

list($f) = sscanf("33.66", "%f");

3voto

Wrikken Points 37727

Si vous voulez dire un flotteur :

$var = floatval("33.66")

Ou

$var = (float)"33.66";

Si vous avez besoin de la précision exacte d'une décimale, il n'y a pas de tel type en PHP. Il existe le type Mathématiques à précision arbitraire mais elle renvoie des chaînes de caractères, ce qui ne vous sera utile que pour effectuer des calculs.

0voto

Charles Points 33585

Vous pouvez essayer floatval mais les flottants sont potentiellement perdants.

Vous pouvez essayer de passer le numéro par sprintf pour le mettre dans un format plus correct. La chaîne de format %.2f produirait un nombre formaté en virgule flottante avec deux décimales. Les décimales excédentaires sont arrondies.

Je ne sais pas si sprintf convertira la valeur en un flottant en interne pour le formatage, donc le problème de perte pourrait toujours exister. Ceci étant dit, si vous ne vous souciez que de deux décimales, vous pouvez ne devrait pas doivent s'inquiéter de la perte de précision.

-1voto

Crayon Violent Points 16544

Le php est un langage faiblement typé. Peu importe que vous ayez

$x = 33.66 ;

o

$x = "33.66" ;

l'envoyer à mssql sera le même quoi qu'il en soit.

Voulez-vous simplement vous assurer qu'il est formaté correctement, ou s'agit-il d'un véritable flotteur ?

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