mySQL Double vs Decimal

151
22 ноября 2018, 15:50

Задача: хранение в базе данных mySQL чисел с плавающей точкой до 8 знаков после запятой. Собственно что лучше? Использовал до этого Decimal и подсмотрел, что многие без заморочек в таких задачах используют Double... Теряется ли точность в таком случае?

P.s Полно статей 2007-2009 и не знаю много ли изменилось с тех пор...

Answer 1

У DOUBLE проблемы с точностью.

  1. FLOAT – забиваем на точность, вспоминаем про проблемы с поиском и все равно используем.

    Диапазон хранимых чисел очень большой: [-3,402823466E+38 .. -1,175494351E-38], 0, и [1,175494351E-38 .. 3,402823466E+38]. Занимает 4 байта.

  2. DOUBLE – ни чем не отличается от FLOAT, рано или поздно – всплывет погрешность.

    Диапазон больше, чем звезд во Вселенной: [-1,7976931348623157E+308 .. -2,2250738585072014E-308], 0, и [2,2250738585072014E-308 .. 1,7976931348623157E+308]. Занимает 8 байтов.

  3. DECIMAL(X,2) – точное число с десятичной точкой. В зависимости от требуемого числа знаков до точки, меняем X. К примеру, нам надо хранить числа до 10 миллионов. Тогда инициализация поля будет иметь вид DECIMAL(9,2), поле – занимать 5 байтов и хранить числа в диапазоне [-9999999.99 .. 9999999.99].

READ ALSO
Node js однопоточен, а php многопоточен?

Node js однопоточен, а php многопоточен?

Сервер на nodejs при подключении нового клиента вызывает коллбек, в котором обрабатывается запросЕсли в коллбеке есть тяжелые вычисления, которые...

170
Проблема с ботом телеграм

Проблема с ботом телеграм

У меня есть код(Использую библиотеку TelegramBot/Api):

156
MS SQL Server PHP PDO Linux nextRowset - ОШИБКА!

MS SQL Server PHP PDO Linux nextRowset - ОШИБКА!

в MS SQL через PDO для PHP при мульти-запросе, не возвращаются данныеПривожу условный код:

158
Возвращает null

Возвращает null

Когда пользователь входит в аккаунт, ему выводятся вся его информацияUsername выводится, а email нет

157