PHP: comment éviter le numéro d'arrondi json_encode automatiquement?

Ayant un gros problème avec json_encode, il arrête automatiquement les numbers, mais j'ai besoin de 2 décimales sur chaque chiffre.

PHP:

<?php $numbers = [1.00,2.00]; foreach ($numbers as $i => $number) { $numbers[$i] = number_format($number, 2, '.', null); } echo json_encode($numbers, JSON_NUMERIC_CHECK); ?> 

SORTIE: [1,2]

SORTIE PREVUE: [1.00,2.00]

Comment puis-je empêcher tous les numbers de ne pas arrondir automatiquement?

PS: PAS UNE STRING 🙂

    On dirait que vous cherchez JSON_PRESERVE_ZERO_FRACTION , disponible en PHP 5.6.6. Les versions précédentes, vous devrez convertir en string ou la sucer et accepter que les flotteurs et les nombres entiers sont équivalents quand il n'y a pas de valeur fractionnaire.

     $numbers = [1.00,2.00]; echo $res = json_encode($numbers,JSON_PRESERVE_ZERO_FRACTION); 
     $numbers = [1.00,2.00]; 

    Ici, vos nombres ont déjà perdu leurs «valeurs décimales». En série, essayez var_dump sur eux juste après cette ligne, vous ne recevrez pas .00 de cela non plus.

    Les nombres de points flottants et les nombres entiers ne contiennent que la valeur numérique , mais le formatting n'est pas conservé de quelque façon que ce soit. Ce n'est pas un problème de json_encode , c'est une vérité fondamentale des valeurs numériques dans l'informatique.

    Si vous souhaitez préserver le formatting, vous devez utiliser les strings tout au long.

    Vous pouvez utiliser votre code de la manière suivante:

     <?php $numbers = [1.00,2.00]; foreach ($numbers as $i => $number) { $numbers[$i] = number_format($number, 2, '.', null); } echo $res = json_encode($numbers); // ["1.00","2.00"] echo str_replace('"', '', $res); //[1.00,2.00] ?> 

    et votre SORTIE PRÉVUE: [1.00,2.00] qui est identique.