Вопрос

Когда я выводят некоторые из моих двойных переменных, они записываются в экспоненциальной форме с использованием FWRITE. Могу ли я установить некоторые значения по умолчанию в PHP, где всякий раз, когда отображается переменная (скопирована или сохранена), она всегда происходит в десятичном формате?

Чтобы быть точным, проблема возникает, когда я использую метод json_decode на строке json, который содержит двойное значение (которое не в экспоненциальной форме). Это двойное значение после преобразования объекта становится экспонентом.

Это было полезно?

Решение

Предполагая, что цифры все еще плавают при написании (в отличие от строк), это один из способов сделать это:

echo rtrim(sprintf("%0.15f", $x), "0.");

Я не уверен, есть ли удобный путь или нет. Но в основном это использует sprintf напечатать максимум 15 десятичных знаков, а затем обрезать любые трейлинг 0 или . Чарс. (Конечно, нет никакой гарантии, что все будет хорошо округлено с трейлинговыми нулями, как вы могли ожидать.)

Если вы просто хотите фиксированный размер, вы можете настроить 15 и удалить rtrim.

Другие советы

У меня была похожая проблема, где json_decode Был преобразовывать последние идентификаторы Twitter / Tweet в экспоненциальные номера.

Я решил его, понижая PHP PHP Precision, что можно сделать разными несколькими способами ...

  • Найти precision значение в вашем php.ini и измените его на precision = 20
  • Добавить ini_set('precision', 20); к вашему приложению PHP
  • Добавить php_value precision 20 к вашему приложению .htaccess или виртуальный файл хоста

В противном случае, если вы в порядке с BIGINT преобразуется в строку, и у вас есть PHP 5.3+, вы также можете пройти флаг json_decode вот так: json_decode($json, true, 512, JSON_BIGINT_AS_STRING)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top