Задать вопрос
@Nubbin

Почему в JSON большие значения?

Добрый ночи.

Ребята почему когда открываешь JSON там большие значения.

46822.6200000000026193447411060333251953125
-1104.090799999999944702722132205963134765625

как их урезать?

number_format() использую перед генерацией json документа
  • Вопрос задан
  • 404 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
Steein
@Steein
Программист
В настоящее время json_encode() используется значение EG (точность), которое установлено на 14. Это означает, что максимум 14 цифр используются для отображения (печати) номера. IEEE 754 double поддерживает более высокую точность и serialize()/ или var_export() использует PG (serialize_precision), который по умолчанию должен быть более точным. Так как json_encode() использует EG (точность), json_encode() удаляет нижние цифры частей дроби и разрушает исходное значение, даже если float PHP может содержать более точное значение float.

И (внимание мое)

Этот RFC предлагает ввести новую настройку EG (precision) = - 1 и PG (serialize_precision) = - 1, которая использует режим zend_dtoa () 0, который использует лучший алгоритм для округления чисел с плавающей запятой (-1 используется для указания режима 0) ,


Короче говоря, есть новый способ заставить PHP 7.1 json_encode использовать новый и улучшенный механизм точности. В php.ini вам нужно перейти serialize_precision на

serialize_precision = -1
.
Вы можете проверить, работает ли она с этой командной строкой

php -r '$price = ["price" => round("45.99", 2)]; echo json_encode($price);'


Вы должны получить

{"price":45.99}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AronTito
@AronTito
разработчик-любитель web приложений и сайтов.
<?php
echo ceil(4.3);    // 5
echo ceil(9.999);  // 10
echo ceil(-3.14);  // -3
?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы