153 votes

PHP String to Float

Je ne suis pas du tout familier avec PHP et j'avais une petite question.

J'ai 2 variables pricePerUnit y InvoicedUnits . Voici le code qui définit ces valeurs :

$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);

Si je sors ceci, j'obtiens les valeurs correctes. Disons que 5000 unités facturées et 1.00 pour le prix.

Maintenant, je dois montrer le montant total dépensé. Lorsque je multiplie ces deux montants ensemble, cela ne fonctionne pas (comme prévu, il s'agit de chaînes de caractères).

Mais je n'ai aucune idée de la façon d'analyser, de coder et de convertir les variables en PHP.

Que dois-je faire ?

267voto

Jonathan Sampson Points 121800
$rootbeer = (float) $InvoicedUnits;

Cela devrait le faire pour vous. Vérifiez Jongler avec les caractères . Vous devriez également lire Conversion de chaînes en nombres .

98voto

earino Points 1484

Vous voulez le non-localistes floatval fonction :

float floatval ( mixed $var ) - Obtient la valeur flottante d'une chaîne de caractères.

Ejemplo:

$string = '122.34343The';
$float  = floatval($string);
echo $float; // 122.34343

30voto

HADI Points 712

Si l'utilisateur écrit 1,00,000, la floatvar affichera une erreur. Donc -

floatval(preg_replace("/[^-0-9\.]/","",$input));

C'est beaucoup plus fiable.

Utilisation :

$input = '1,03,24,23,434,500.6798633 this';
echo floatval(preg_replace("/[^-0-9\.]/","",$input));

11voto

Tobias P. Points 3605

Le traitement du balisage dans les flottants est une tâche non triviale. Dans la notation anglaise/américaine, vous mettez en forme plus de 1000 46*10-2 :

1,000.46

Mais en Allemagne, on change la virgule et le point :

1.000,46

Il est donc très difficile de deviner le bon numéro dans les applications multilingues.
Je suggère fortement d'utiliser Zend_Measure du Zend Framework pour cette tâche. Ce composant va analyser la chaîne de caractères en un flotteur selon la langue de l'utilisateur.

4voto

Manoj Points 21

Vous pouvez suivre ceci lien pour en savoir plus sur Comment convertir une chaîne de caractères/un nombre en nombre/float/décimal en PHP. VOICI CE QUE DIT CE LIEN...

Méthode 1 : Utilisation de la fonction number_format(). La fonction number_format() est utilisée pour convertir une chaîne de caractères en un nombre. Elle renvoie le nombre formaté en cas de succès, sinon elle donne E_WARNING en cas d'échec.

$num = "1000.314"; 

//Convert string in number using  
//number_format(), function 
echo number_format($num), "\n"; 

//Convert string in number using  
//number_format(), function 
echo number_format($num, 2); 

Méthode 2 : Utilisation du moulage de type : Le typecasting permet de convertir directement une chaîne de caractères en un type primitif de type float, double ou integer. C'est la meilleure façon de convertir une chaîne en un nombre sans aucune fonction.

// Number in string format 
$num = "1000.314"; 

// Type cast using int 
echo (int)$num, "\n"; 

// Type cast using float 
echo (float)$num, "\n"; 

// Type cast using double 
echo (double)$num; 

Méthode 3 : Utilisation des fonctions intval() et floatval(). Les fonctions intval() et floatval() peuvent également être utilisées pour convertir la chaîne de caractères en ses valeurs entières et flottantes correspondantes, respectivement.

// Number in string format 
$num = "1000.314"; 

// intval() function to convert  
// string into integer 
echo intval($num), "\n"; 

// floatval() function to convert 
// string to float 
echo floatval($num); 

Méthode 4 : En ajoutant 0 ou en effectuant des opérations mathématiques. La chaîne de caractères peut également être convertie en un nombre entier ou flottant en ajoutant 0 à la chaîne. En PHP, en effectuant des opérations mathématiques, la chaîne de caractères est convertie en un entier ou un flottant de manière implicite.

// Number into string format 
$num = "1000.314"; 

// Performing mathematical operation  
// to implicitly type conversion 
echo $num + 0, "\n"; 

// Performing mathematical operation  
// to implicitly type conversion 
echo $num + 0.0, "\n"; 

// Performing mathematical operation  
// to implicitly type conversion 
echo $num + 0.1;

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