Quelle est la bonne façon d'arrondir une chaîne PHP à deux décimales?
$number = "520"; // It's a string from a database
$formatted_number = round_to_2dp($number);
echo $formatted_number;
La sortie doit être 520.00
;
Comment devrait être la round_to_2dp()
définition de la fonction?
php
formatting
numbers
rounding
number-formatting
Rich Bradshaw
la source
la source
round
est une fonction mathématique, et ce n'est qu'un problème de formatage.Réponses:
Vous pouvez utiliser number_format () :
Exemple:
Cette fonction renvoie une chaîne .
la source
round
ne résout pas le problème du PO ici.round("520", 2)
renvoie le flottant520
, et l'écho qui bien sûr ne le montrera pas à 2 décimales. Dans le but de l'OP - montrant un entier à 2 décimales en le remplissant avec des zéros de fin - vous avez besoin d'une fonction de formatage de nombre, pas d'une fonction d'arrondi.520,00
au lieu de520.00
, cela fonctionne simplement.Utilisez
round()
(utilisez si vous attendez un nombre au format flottant uniquement, sinon utilisez number_format () comme réponse donnée par Codemwnci ):Du manuel:
...
la source
round($number, 2);
ne fonctionne pas. Je veux 520,00 pas 520. Je ne peux pas croire que le tour ne le fasse pas par défaut.Alternativement,
la source
520,00
? Je suppose que l'autre réponse fonctionne mieux dans ce cas.http://php.net/manual/en/function.round.php
par exemple
la source
Essayer:
La sortie sera:
la source
Vous pouvez utiliser le PHP
printf
ou lessprintf
fonctions:Exemple avec
sprintf
:Vous pouvez également exécuter la même chose sans
echo
. Exemple:sprintf("%.3f", $num);
Production:
Alternativement, avec
printf
:Production:
la source
Une autre façon plus exotique de résoudre ce problème consiste à utiliser
bcadd()
une valeur fictive pour $ right_operand de0
.la source
bc*
fonctions ne sont pas arrondies, elles sont toujours arrondies. Par exemple,bcadd("1.0999","0.0",1)
donne "1,0", pas "1,1".$scale
des chiffres fractionnaires. Cela équivaut à un arrondi vers zéro.Utilisez PHP number_format () .
Par exemple,
La sortie sera:
la source
Utilisez la fonction PHP number_format () .
la source
Cela affichera exactement deux chiffres après le point décimal.
Avantage:
Si vous souhaitez afficher seulement deux chiffres après une valeur flottante et non pour int, utilisez ceci.
la source
round_to_2dp
est une fonction définie par l'utilisateur, et rien ne peut être fait à moins que vous n'ayez publié la déclaration de cette fonction.Cependant, je suppose que cela fait:
number_format($number, 2);
la source
round_to_2dp($number);
était censé être un pseudocode; le PO demandait que quelqu'un lui dise quoi remplacer cette expression.L'arrondi arrondit correctement le nombre et le sprintf le force à 2 décimales s'il se trouve qu'il n'y a qu'une décimale après l'arrondi.
la source
Il renverra 5,98 sans arrondir le nombre.
la source
floor($retailPrice * 100) / 100;
sans avoir besoin d'un format numérique.Pour l'arrondissement conditionnel, c.-à-d. afficher le nombre décimal là où il est vraiment nécessaire, sinon le nombre entier
123,56 => 12,56
123,00 => 123
la source
Je fais le mien.
la source
Ici, j'obtiens deux décimales après le
.
(point) en utilisant une fonction ...Résultats de la fonction ci-dessus:
Nouvelle réponse correcte
Utilisez la fonction native PHP bcdiv
la source
Cela vous donnera 2 chiffres après la virgule.
la source
Si vous souhaitez utiliser deux chiffres décimaux dans l'ensemble de votre projet, vous pouvez définir:
Ensuite, la fonction suivante produira le résultat souhaité:
Mais si vous n'utilisez pas la fonction bcscale, vous devez écrire le code comme suit pour obtenir le résultat souhaité.
En savoir plus
BC Math Functions
bcscale
la source
Numéro sans rond
la source
Voici une autre solution avec strtok et str_pad :
la source
Ajout à d'autres réponses, puisque number_format () ajoutera, par défaut, un séparateur de milliers.
Pour supprimer cela, procédez comme suit:
la source
Exemples
la source
Vous pouvez utiliser la fonction PHP round () .
la source