PHP Chaîne de Flotter
Je ne suis pas familier avec PHP et avait une question rapide.
J'ai 2 variables pricePerUnit
et InvoicedUnits
. Voici le code qui est la définition de ces valeurs:
$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);
Si je sortie de ceci, j'obtiens les valeurs correctes. Disons 5000
facturés unités et 1.00
pour le prix.
Maintenant, j'ai besoin d'afficher le montant total dépensé. Quand je multiplie ces deux ensemble, il ne fonctionne pas (comme prévu, ce sont des chaînes de caractères).
Mais je n'ai aucune idée de comment analyser/cast/convertir des variables en PHP.
Que dois-je faire?
Vous devez vous connecter pour publier un commentaire.
Le faire pour vous. Découvrez Type De Jonglerie. Vous devriez également lire Chaîne de conversion en Nombres.
VARCHAR>11
en longueur.. n'ont pas rétréci vers le bas exactement pourquoi encore.Vous voulez le non-locale-aware
floatval
function:Exemple:
(float)
à convertir sur le premier serveur "," et le second ","Bien, si l'écriture de l'utilisateur 1,00,000 puis floatvar va afficher le message d'erreur. Soi -
C'est beaucoup plus fiable.
Utilisation :
$string=preg_replace("/[^0-9\.\-]/","",$string);
Traiter avec le balisage dans les flotteurs est une tâche non triviale. Dans la version anglaise/Américaine de notation vous format un millier de plus
46*10-2
:Mais en Allemagne, vous pouvez modifier la virgule et le point:
De ce fait, il est vraiment difficile de deviner le nombre de multi-langue applications.
Je suggère fortement à l'aide de
Zend_Measure
du Zend Framework pour cette tâche. Ce composant va analyser la chaîne à un flotteur par les utilisateurs de la langue.intl
extension.Utiliser cette fonction pour lancer une valeur float partir de n'importe quel genre de style de texte:
Cette solution n'est pas la personne à charge sur tous les paramètres régionaux. Ainsi, pour la saisie de l'utilisateur les utilisateurs peuvent taper les valeurs flottantes dans la façon dont ils le souhaitent. C'est très utile par exemple lorsque vous avez un projet qui est en anglais seulement, mais les gens partout dans le monde l'utilisent et ne pas avoir à l'esprit que le projet veut un point au lieu d'une virgule pour les valeurs flottantes.
Vous pouvez jeter javascript dans le mélange de récupérer les paramètres par défaut des navigateurs, mais encore beaucoup de gens définir ces valeurs à l'anglais, mais encore de frappe au lieu de 1,25 1,25 (surtout, mais non limité à la traduction de l'industrie, de la recherche et de l'IL)
J'ai été en cours d'exécution pour un problème avec la manière standard pour ce faire:
Si il n'y a pas un nombre valide, l'analyseur ne doit pas renvoyer un nombre, il faut jeter une erreur. (C'est une condition j'essaie de l'attraper dans mon code, YMMV)
Pour corriger ce que j'ai fait ce qui suit:
Alors avant de donner suite à la conversion, je peux vérifier et retourner une erreur si il n'y avait pas valide analyser de la chaîne.