float в базе и его суммирование

una1ded

Новичок
float в базе и его суммирование

есть таблица в MySql 3.23.53-max
поля:
tr_id - bigint(20) UNSIGNED auto_increment - PRIMARY
summ - float
и ещё пара информационных полей, не имеет значения.
в таблице ровно 2 записи
в обеих summ = 0.1
при выполнении такого запроса
PHP:
SELECT sum(`summ`) FROM `aff_trans`
мы получаем вот такое число 0.20000000298023

если мы оставим только 1 строку
то на
PHP:
SELECT sum(`summ`) FROM `aff_trans`
возвращает
0.10000000149012
а на
PHP:
SELECT `summ` FROM `aff_trans`
вернет 0.1

разница небольшая. но при большом числе записаей может стать существенной. хотелось бы разобраться, что к чему
 

chira

Новичок
если точность вычислений извесна, то испольуй тип DECIMAL
если точность float не устраивает, используй DOUBLE
 

una1ded

Новичок
c даблом пробовал
та же ботва.
вопрос не столько в том, как выйти из этой ситуации, сколько в том, почему происходит ошибка при суммировании в Mysql?
 

zerkms

TDD infected
Команда форума
una1ded
это не ошибка суммирования в mysql - это ошибка в операциях с плавающей запятой у железки...
 

una1ded

Новичок
проверил на 2х машинах (у меня, потом отправил приятелю ссылку суда и попросил проверить. у него тоже самое)
сейчас проблему решил.
как не могу объяснить, даже если захочу )
 
Сверху