所以我有这样的SQL表设置
CREATE TABLE IF NOT EXISTS `points` (
`id` int(11) NOT NULL auto_increment,
`lat` float(10,6) NOT NULL,
`lng` float(10,6) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
我插入像
这样的东西INSERT INTO `points` (`lat`, `lng`) VALUES ('89.123456','-12.123456');
给我一行lat和lng为89.123459和-12.123455
什么事?
答案 0 :(得分:3)
在计算机中,“浮动”值通常以数字平方数的形式存储,有些数字不能完全按输入的方式存储。 如果你需要它,你应该把它存储为DECIMAL(8,6)
答案 1 :(得分:1)
FLOAT
数据类型具有舍入效果,因为并非每个小数基数为10的数字都可以用IEEE 754的base-2格式表示。因此,FLOAT
和DOUBLE PRECISION
应被视为不精确的数字数据类型。
阅读:“每个计算机科学家应该知道的关于浮点算术的内容”(http://www.validlab.com/goldberg/paper.pdf)
+1 @ MindStalker的答案 - 如果您需要精确的数字数据类型,请使用NUMERIC
或DECIMAL
。