Je ne connais pas du tout PHP et j'avais une petite question.
J'ai 2 variables pricePerUnit
et InvoicedUnits
. Voici le code qui définit ces valeurs:
$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);
Si je produis ceci, j'obtiens les valeurs correctes. Disons les 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 ensemble, cela ne fonctionne pas (comme prévu, ce sont des chaînes).
Mais je n'ai aucune idée de comment analyser / convertir / convertir des variables en PHP.
Que devrais-je faire?
VARCHAR>11
en longueur ... je n'ai pas encore précisé pourquoi.Vous voulez que le conscient non-locale
floatval
fonction :Exemple:
la source
(float)
conversion du premier serveur en "," et sur le second en ","Eh bien, si l'utilisateur écrit 1,00,000 alors floatvar affichera une erreur. Alors -
C'est beaucoup plus fiable.
Utilisation:
la source
$string=preg_replace("/[^0-9\.\-]/","",$string);
Gérer le balisage dans les flottants est une tâche non triviale. Dans la notation anglaise / américaine, vous formatez mille plus
46*10-2
:Mais en Allemagne, vous changeriez la virgule et le point:
Cela rend très difficile de deviner le bon nombre dans les applications multilingues.
Je suggère fortement d'utiliser
Zend_Measure
le Framework Zend pour cette tâche. Ce composant analysera la chaîne en flottant par la langue de l'utilisateur.la source
intl
extension.Utilisez cette fonction pour convertir une valeur flottante à partir de tout type de style de texte:
Cette solution ne dépend d'aucun paramètre régional. Ainsi, pour les utilisateurs saisis, les utilisateurs peuvent taper des valeurs flottantes comme bon leur semble. Ceci est vraiment utile, par exemple lorsque vous avez un projet qui est en anglais seulement mais que des gens du monde entier l'utilisent et peuvent ne pas avoir à l'esprit que le projet veut un point au lieu d'une virgule pour les valeurs flottantes. Vous pouvez lancer du javascript dans le mix et récupérer les paramètres par défaut du navigateur, mais de nombreuses personnes définissent encore ces valeurs en anglais mais en tapant toujours 1,25 au lieu de 1,25 (en particulier, mais sans s'y limiter, l'industrie de la traduction, la recherche et l'informatique)
la source
J'étais en train de rencontrer un problème avec la manière standard de faire ceci:
S'il n'y a pas de nombre valide, l'analyseur ne doit pas renvoyer de nombre, il doit renvoyer une erreur. (C'est une condition que j'essaie de saisir dans mon code, YMMV)
Pour résoudre ce problème, j'ai fait ce qui suit:
Ensuite, avant de poursuivre le traitement de la conversion, je peux vérifier et renvoyer une erreur s'il n'y a pas d'analyse valide de la chaîne.
la source
Si vous devez gérer des valeurs qui ne peuvent pas être converties séparément, vous pouvez utiliser cette méthode:
la source
vous pouvez suivre ce lien pour en savoir plus sur Comment convertir une chaîne / un nombre en nombre / flottant / 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 en nombre. Il renvoie le nombre formaté en cas de succès, sinon il donne E_WARNING en cas d'échec.
Méthode 2: Utilisation de la conversion de type: la conversion de type peut directement convertir une chaîne en un type primitif float, double ou integer. C'est la meilleure façon de convertir une chaîne en un nombre sans aucune fonction.
Méthode 3: Utilisation de la fonction intval () et floatval (). Les fonctions intval () et floatval () peuvent également être utilisées pour convertir la chaîne en ses valeurs entières et flottantes correspondantes respectivement.
Méthode 4: en ajoutant 0 ou en effectuant des opérations mathématiques. Le numéro de chaîne peut également être converti en entier ou en flottant en ajoutant 0 avec la chaîne. En PHP, lors d'opérations mathématiques, la chaîne est convertie implicitement en entier ou en flottant.
la source