тур в PHP показывает научную запись вместо полного номера - PullRequest
10 голосов
/ 29 января 2009

Я пытаюсь сделать эхо-переменную, содержащую 1400000. так там написано: echo round(1400000); это дает 1,4E + 6 вместо полного числа. У кого-нибудь есть идея, как отобразить его полностью?

Ответы [ 3 ]

10 голосов
/ 29 января 2009

Кажется, что раунд был проблемой. Я изменил его с number_format(), и это отлично справляется с работой. Спасибо Арону и Полу за ответы.

7 голосов
/ 29 января 2009

В связи с вашим вопросом, я также встречал этот комментарий на сайте PHP.

PHP переключается со стандартного десятичного числа запись в экспоненциальной записи для определенные «специальные» поплавки. Ты можешь видеть частичный список таких «специальных» значения с этим:

for( $tmp = 0, $i = 0; $i < 100; $i++ ) 
{
    $tmp += 100000;
    echo round($tmp),"\n"; 
} 

Итак, если вы добавите два числа с плавающей точкой, в конечном итоге «специальное» значение, например 1,2E + 6, затем положить это значение неизмененным в обновить запрос, чтобы сохранить значение в десятичный столбец, скажем, вы, скорее всего, получить неудачную транзакцию, так как база данных будет видеть "1.2E + 6" как varchar данные, а не десятичные. Точно так же вы будете скорее всего, получит ошибку проверки XSD, если вы помещаете значение в xml.

Я должен быть честным: это один из самые странные вещи, которые я видел в любой язык в течение 20 лет кодирование, и это колоссальная боль обойти.

Похоже, что "реального" исправления еще не было, но, судя по комментариям в отчете об ошибке Пол Диксон, ссылающийся на ранее, его решение, похоже, работает.

3 голосов
/ 29 января 2009

Возможно, связано с этим сообщением об ошибке , поэтому вы можете попробовать

printf("%d", $myvar);
...