раунд в PHP показывает научную нотацию вместо полного числа
-
20-08-2019 - |
Вопрос
Я пытаюсь выполнить эхо-отображение переменной, содержащей 1400000.так там написано: echo round(1400000);
это дает 1,4E + 6 вместо полного числа.У кого-нибудь есть идея о том, как отобразить его полностью?
Решение
Похоже, проблема была в том раунде.Я изменил его с помощью number_format()
и это прекрасно справляется со своей задачей.Спасибо Арону и Полу за ответы.
Другие советы
В связи с вашим вопросом я также наткнулся этот комментарий на веб-сайте PHP.
PHP переключается со стандартной десятичной записи на экспоненциальную для определенных "специальных" значений с плавающей точкой.Вы можете увидеть неполный список таких "специальных" значений с этим:
for( $tmp = 0, $i = 0; $i < 100; $i++ )
{
$tmp += 100000;
echo round($tmp),"\n";
}
Итак, если вы добавите два значения с плавающей точкой, в итоге получите "специальное" значение, например1.2 Е+6, тогда положим, что значение без изменения в запрос на обновление, чтобы сохранить значение в десятичный столбец, скажем, вы, вероятно, получите неудачной сделки, поскольку база данных будет увидеть "1.2 Е+6" как varchar сведения, не десятичная.Аналогично, вы, вероятно, получите ошибку проверки XSD, если вы введете значение в xml.
Я должен быть честен:это одна из самых странных вещей, которые я видел в любом языке за более чем 20 лет программирования, и это колоссальная боль, чтобы обойти.
Похоже, "реального" исправления еще не было, но, судя по комментариям в сообщение об ошибке, на которое ссылался Пол Диксон ранее его решение, похоже, работало.
Возможно, это связано с этим отчет об ошибке, так что вы могли бы попробовать
printf("%d", $myvar);