Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Не правильный подсчет SELECT SUM()

Страниц (1): [1]
 

1. Sanek_OS9 - 25 Февраля, 2017 - 18:41:27 - перейти к сообщению
Добрый вечер, у меня почему то выводит не верный результат запрос: SELECT SUM(`pole1` + `pole2`) FROM `table`.
Тип полей pole1 и pole2 = int
По записям в таблице (см.скрин) результат должен быть = 1, а запрос выводит 0.9999999925494194
0.36545 + 0.36545 + 0.0391 + 0.23 = 1
2. Мелкий - 25 Февраля, 2017 - 19:10:58 - перейти к сообщению
Sanek_OS9 пишет:
Тип полей pole1 и pole2 = int

Sanek_OS9 пишет:
По записям в таблице

Одно из утверждений ложно.

Судя по поведению агрегатной функции - тип данных float. Результат в пределах нормального отклонения
3. Sanek_OS9 - 25 Февраля, 2017 - 19:57:30 - перейти к сообщению
Мелкий пишет:
Sanek_OS9 пишет:
Тип полей pole1 и pole2 = int

Sanek_OS9 пишет:
По записям в таблице

Одно из утверждений ложно.

Судя по поведению агрегатной функции - тип данных float. Результат в пределах нормального отклонения


Извиняюсь, действительно ведь float, а отклонение никак не убрать?
4. Мелкий - 25 Февраля, 2017 - 20:19:06 - перейти к сообщению
float - приблизительное значение по своему определению ieee 754.
Если нужна точная математика - вам необходим формат фиксированной запятой, numeric (так же известный как decimal)
5. Sanek_OS9 - 26 Февраля, 2017 - 00:33:54 - перейти к сообщению
Мелкий пишет:
float - приблизительное значение по своему определению ieee 754.
Если нужна точная математика - вам необходим формат фиксированной запятой, numeric (так же известный как decimal)

спасибо

 

Powered by ExBB FM 1.0 RC1