раунд в PHP показывает научную нотацию вместо полного числа

StackOverflow https://stackoverflow.com/questions/491154

Вопрос

Я пытаюсь выполнить эхо-отображение переменной, содержащей 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top