6
votes

Lancer une chaîne numérique sous forme de données de type flotteur

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

par exemple. J'ai une chaîne "33.66" et je veux le convertir en valeur décimale avant de l'envoyer à MSSQL.


0 commentaires

4 Réponses :


0
votes

Vous pouvez essayer Floatval , mais des flotteurs sont potentiellement pertinents.

Vous pouvez essayer d'exécuter le numéro via sprintf pour l'obtenir à un format plus correct. La chaîne de format %. 2f produirait un nombre formaté à virgule flottante avec deux décimales. Des endroits excédentaires sont arrondis.

Je ne suis pas sûr que Sprintf convertira la valeur en un float en interne pour le formatage, le problème de la perte pourrait encore exister. Cela étant dit, si vous ne vous inquiétez que pour deux décimales, vous ne devez pas besoin de vous inquiéter de la perte de précision.


0 commentaires

3
votes

Si vous voulez dire un flotteur: xxx

ou xxx

Si vous avez besoin de la précision exacte d'une décimale, il n'y a pas de tel Tapez PHP. Il y a le mathématiques de précision arbitraire extension, mais il retournera des cordes, Donc, ce n'est que utile pour vous lorsque vous effectuez des calculs.


0 commentaires

18
votes

Que diriez-vous de floabeval () code> ?

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


1 commentaires

Syntaxe alternative: SSCANF ("33.66", "% f", $ f); <- cela crée une variable de référence.



-1
votes

PHP est une langue de typée de manière lâche. Peu importe si vous avez

$ x = 33.66;

ou

$ x = "33.66";

L'envoyer à MSSQL sera le même, peu importe.

Voulez-vous simplement vous assurer qu'il est correctement formaté ou est un flotteur réel?


2 commentaires

Eh bien, il s'est avéré que j'avais des devis uniques avant de fermer les deux crochets de citation. C'était la raison pour laquelle MSSQL le refusait XD Merci pour la note.


Et MySQL fera des conversions de chaîne <->. Ce n'est pas toujours une bonne idée.