PHP Вывод номеров в экспоненциальной форме
-
08-10-2019 - |
Вопрос
Когда я выводят некоторые из моих двойных переменных, они записываются в экспоненциальной форме с использованием 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)