Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: по точности double

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: поле с double по разному сохранаят данные
broshurkaplus
Отправлено: 22 Ноября, 2016 - 13:10:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


Помог: 2 раз(а)




при разворачивании нового экземпляра одного старого проекта через некоторое время обнаружил что поле с типом double не так как планировалось сохраняет данные (агрегация количественных параметров).
те
имеем числа с максимум 8 знаков в целой части и 12 знаков после запятой,
поле используется как первичный ключ.
например число 1900.000000000179
сохраняет и заносит в бд тк есть, а на хостинге, где разворачивал проект
оказалось 1900.00000000018
в связи с чем пошел перекос данных.
(это ничего мы данные еще раз перегоним...)
запланировано использовать decimal (20,12), тк целое может быть max mediumint
кто сталкивался почему это могло произойти??
какой тип поля лучше использовать?
спасибо
 
 Top
Мелкий Супермодератор
Отправлено: 22 Ноября, 2016 - 13:25:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Потому что плавающая запятую в качестве PK - это к неожиданным граблям.
Нельзя формат с плавающей запятой использовать для точной математики. By design результат может плыть.
Если у вас есть требования к точности хранимых и обрабатываемых данных - то вам нужен формат с фиксированной запятой. Либо свести задачу вовсе к целочисленной, а запятую добавлять при выводе значений.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB