| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > PDO округляет float значения |
| Автор: solenko 29.1.2009, 07:18 | ||||||||
| Здравствуйте. Простейший код для воспроизведения бага (или может это фича?)
В результате получаем в базе число, округденног до шестого знака после запятой. Вопрос -- как можно обойти это опругление или, по крайней мере, задать его точность? Добавлено через 1 минуту и 20 секунд Кстати, такое впечатление, что для бинда параметров внутри PDO используется все та же sprintf:
|
| Автор: krundetz 29.1.2009, 08:48 |
| solenko, у FLOAT есть аргумен размера определяющий максимальную точность, видимо по умолчанию это FLOAT(6), попробуй указать большую точность. Возможно стоит посмотреть в сторону типа данных REAL |
| Автор: bars80080 29.1.2009, 10:06 |
в смысле нет? я всегда создаю поле для цен в формате float(12, 2) , где 2 - количество знаков после запятой |
| Автор: krundetz 29.1.2009, 12:54 | ||||
кури мануалы, все там есть
так у тебя PDO выполняет роль клиента? Тогда вот тебе ответ:
Ты хоть попробовал указать явно точность? |
| Автор: solenko 29.1.2009, 17:22 | ||||||||
bars80080,
Нет никаких умолчаний, если не указана точность.
При вставке -- да. При создании таблиц -- нет.
А ты хоть пробовал прикинуть как это работает? PDO НЕ выполняет describe перед каждым запросом, PDO НЕ знает ничего о структуре таблиц, вставка вручную с консоли проходит с необходимой точностью. Предложения по теме будут? |
| Автор: skyboy 29.1.2009, 18:59 |
можно привести пример? |
| Автор: solenko 29.1.2009, 19:48 | ||||
skyboy, пример вы получите если выполните код. Кусок из "боевого лога" выглядит:
При этом в execute передаются (var_dump($params))
Полноценный пример на локальной машине вы сможете получить выполнив код из первого сообщения |