MariaDB SQL 查询 returns 来自 select 语句的截断数字

MariaDB SQL query returns truncated numbers from select statement

我正在尝试从 Maria DB 中提取数据。模式中的数据类型是 DECIMAL (12, 8)。 在我的程序中,当我使用以下查询进行查询时。它截断到 4(或 3)位小数并四舍五入。

select CAST(FORMAT(latitude, 100) AS FLOAT) latitude from mytable

它 returns 36.173 。在数据库中它存储为 36.17298200 我希望它 return 为 36.172982

根据官方 MySQL 文件:

The DECIMAL and NUMERIC types store exact numeric data values. These types are used when it is important to preserve exact precision, for example with monetary data. In MySQL, NUMERIC is implemented as DECIMAL, so the following remarks about DECIMAL apply equally to NUMERIC.

Floating-Point Types (Approximate Value) - FLOAT, DOUBLE

所以你应该写类似的东西:

select CAST(FORMAT(latitude, 100) AS DECIMAL(8,6)) latitude from mytable

因为8是总位数,6是精度。

要在计算中使用该数字,只需使用它即可。没有转换,没有CAST.

显示 到小数点后 6 位,在 SELECTing 上执行此操作:

SELECT FORMAT(latitude, 6) ...

FORMAT(..., 100) 应该给你很多小数位。

FLOAT 没有足够的精度来区分超过 6 位或 7 位 重要的 位小数。也就是说,第一个和第三个数字是 FLOAT:

中最接近的可表示数字
x4210b122 --> 36.172981262207
              36.17298200
x4210b123 --> 36.172985076904

双:

x40421624463065f9 --> 36.1729819999999975

纬度和经度:

FLOAT  has a resolution of 1.7 m or 5.6 ft -- good enough for Vehicles
DECIMAL(8,6)               16 cm    1/2 ft -- Friends in a mall