Проверяя новую структуру базы данных, я увидел, что кто-то изменил значение поля с float на double. Интересно, почему, я проверил документацию mysql, но, честно говоря, не понял, в чем разница.
Оба они представляют собой числа с плавающей запятой. A FLOATдля чисел с одинарной точностью, а DOUBLEдля чисел с двойной точностью.
MySQL использует четыре байта для значений с одинарной точностью и восемь байтов для значений с двойной точностью.
Существует большое отличие от чисел с плавающей запятой и десятичных (числовых) чисел, которые вы можете использовать с DECIMALтипом данных. Это используется для хранения точных числовых значений данных, в отличие от чисел с плавающей запятой, где важно сохранить точную точность, например, с денежными данными.
@Kailas Floats округляются, а десятичные - нет. Десятичное число (9,3) может быть, например, 123456.789, тогда как если вы попытаетесь сохранить 123456.789, оно будет вставлено как 123456.0 как число с плавающей запятой.
Обратите внимание, что через какой-то момент округляется и удваивается. Например, 100000.1 усекается до 100000 как число с плавающей запятой.
Блейк
14
Думал , что я хотел бы добавить свой собственный пример , который помог мне увидеть разницу , используя значение 1.3при добавлении или умножения с другим float, decimalи double.
FLOAT хранит числа с плавающей запятой с точностью до восьми разрядов и имеет четыре байта, тогда как DOUBLE хранит числа с плавающей запятой с точностью до 18 разрядов и имеет восемь байтов.
Ответы:
Оба они представляют собой числа с плавающей запятой. A
FLOAT
для чисел с одинарной точностью, аDOUBLE
для чисел с двойной точностью.MySQL использует четыре байта для значений с одинарной точностью и восемь байтов для значений с двойной точностью.
Существует большое отличие от чисел с плавающей запятой и десятичных (числовых) чисел, которые вы можете использовать с
DECIMAL
типом данных. Это используется для хранения точных числовых значений данных, в отличие от чисел с плавающей запятой, где важно сохранить точную точность, например, с денежными данными.источник
Возможно, этот пример мог бы объяснить.
У нас есть такая таблица:
Для первого отличия мы пытаемся вставить запись с '1,2' в каждое поле:
Таблица выглядит так:
Увидеть разницу?
Мы пробуем следующий пример:
Привет! Мы можем найти разницу так:
источник
float(10, 2)
Двойники похожи на поплавки, за исключением того, что они вдвое больше. Это позволяет добиться большей точности.
источник
Думал , что я хотел бы добавить свой собственный пример , который помог мне увидеть разницу , используя значение
1.3
при добавлении или умножения с другимfloat
,decimal
иdouble
.1.3
поплавки ДОБАВЛЕНЫ в1.3
разные типы:1.3
float, УМНОЖЕННЫЙ1.3
разными типами:Это использует MySQL 6.7
Запрос:
Создать таблицу и вставить данные:
источник
FLOAT хранит числа с плавающей запятой с точностью до восьми разрядов и имеет четыре байта, тогда как DOUBLE хранит числа с плавающей запятой с точностью до 18 разрядов и имеет восемь байтов.
источник
Float имеет 32 бита (4 байта) с точностью до 8 знаков. Double имеет 64 бита (8 байт) с точностью до 16 знаков.
Если вам нужна более высокая точность, используйте Double вместо Float .
источник