Я ввожу '35444650.00' в качестве плавающего в мой MySQL, и он переформатирует до 35444648.00, любая помощь приветствуется …
Поплавки имеют определенный уровень точности, вы можете выйти за пределы того, насколько точным может быть тип данных с плавающей точкой. Вместо этого попробуйте использовать DOUBLE.
Поплавок имеет 6 цифр точности. Используйте double, чтобы получить 15 или переключитесь на числовое (x, y). Если вам интересно, ознакомьтесь с требованиями к хранению MySQL для разных типов данных.
В руководстве MySQL утверждается, что поля FLOAT, REAL, and DOUBLE PRECISION
сохраняют значения как приблизительные, а значения INTEGER, SMALLINT, DECIMAL, and NUMERIC
сохраняют значения как точные .
Я считаю, что лучше всего решить эту проблему – использовать десятичную.
Ссылка: http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html
Более высокая точность альтернативы float – DOUBLE
. Но, глядя на пример, я думаю, что тип данных DECIMAL
может пригодиться, если количество цифр, необходимых после нуля, невелико (около 2-4), а число цифр до десятичного числа также невелико (около 10-12).
Вы преодолеваете уровень точности. Вам нужно определить float с большей точностью, то есть «FLOAT (10,5)» будет означать float, который может содержать 10 цифр с точностью до пяти после десятичной точки.