Почему число в БД равное 2.56 после получение его запросом и обработки функцией fetch и передачи в скрипт php равно 2.5600003674?
_____________
Трус не играет в хокей
T1grOK
29.01.2015 - 20:41
Это особенность обработки и хранения чисел с плавающей точкой. Вычислительные системы могут только с приблизительной точностью отобразить подобные числа.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Меня удивило такое поведение. Не думал что надо будет округлять до количества знаков.
_____________
Трус не играет в хокей
sergeiss
29.01.2015 - 22:32
Цитата (stump @ 29.01.2015 - 21:22) |
Не думал что надо будет округлять до количества знаков. |
В Мускуле есть другие типы данных, не только float. Они позволяют хранить числа с заданной точностью.
Приведенная мной цитата говорит о том, что тебе надо сменить float на что-то другое. А на что именно - читай доки.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Цитата (sergeiss @ 29.01.2015 - 22:32) |
читай доки. |
Так и надо делать
. Сходил почитал доки и узнал что надо к флоат добавить в скобках количество разрядов ( float(2) ) и все проблемы проходят.
Можно также использовать DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] где атрибут M указывает количество выводимых пользователю знаков, а атрибут D - количество разрядов.
В своем примере я использовал float(2) что позволило мне убрать костыль из вьюхи где было округление до второго знака.
_____________
Трус не играет в хокей