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
我正在尝试从 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