В связи с вашим вопросом, я также встречал этот комментарий на сайте 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 лет
кодирование, и это колоссальная боль
обойти.
Похоже, что "реального" исправления еще не было, но, судя по комментариям в отчете об ошибке Пол Диксон, ссылающийся на ранее, его решение, похоже, работает.