问题描述
我正在尝试从Maria DB中提取数据。模式中的数据类型为DECIMAL(12,8)。 在我的程序中,当我使用以下查询进行查询时。它可以精确到小数点后4位(或3个),并且四舍五入。
select CAST(FORMAT(latitude,100) AS FLOAT) latitude from mytable
它返回36.173。在DB中存储为36.17298200 我希望它返回为36.172982
解决方法
根据MySQL官方文档:
DECIMAL和NUMERIC类型存储精确的数值数据值。当保留精确度很重要时,例如使用货币数据,则使用这些类型。在MySQL中,NUMERIC被实现为DECIMAL,因此以下有关DECIMAL的说明同样适用于NUMERIC。
Floating-Point Types (Approximate Value) - FLOAT,DOUBLE
所以您应该写类似的东西:
select CAST(FORMAT(latitude,100) AS DECIMAL(8,6)) latitude from mytable
总位数为8,精度为6。
,要在计算中使用数字,只需使用它。没有转换,没有$this->addPlugin('Authorization');
。
要将其放置到小数点后6位,请在CAST
上执行:
SELECTing
SELECT FORMAT(latitude,6) ...
应该给你很多小数位。
FORMAT(...,100)
的精度不足以区分6个或7个以上的重要小数位。也就是说,第一个和第三个数字nere是FLOAT
中最接近的可表示数字:
FLOAT
双重:
x4210b122 --> 36.172981262207
36.17298200
x4210b123 --> 36.172985076904
关于经度:
x40421624463065f9 --> 36.1729819999999975