pgsql 计算数值 2.8 返给前端 2.8000000000000003
时间: 2023-08-18 13:05:19 浏览: 227
这是由于计算机内部使用二进制存储浮点数,而二进制无法精确地表示某些十进制小数,比如 0.1 或 0.2,因此在进行浮点数运算时可能会出现精度误差。在 PostgreSQL 中,可以使用 DECIMAL 类型来存储精确的小数值,而不是使用浮点数类型(比如 FLOAT 或 DOUBLE PRECISION)。DECIMAL 类型支持指定精度和小数位数,并可以进行精确的计算。可以在查询时使用 CAST 函数将 DECIMAL 类型的值转换为字符串类型并指定输出格式,从而保证输出的小数位数与存储时定义的精度一致。例如,下面的查询可以将一个 DECIMAL 类型的数值转换为字符串类型并指定输出格式:
```
SELECT CAST(2.8 AS DECIMAL(10, 8))::text;
```
其中,DECIMAL(10, 8) 表示精度为 10,小数位数为 8。将 DECIMAL 类型的值转换为字符串类型后,再返回给前端即可。这样就可以避免浮点数运算时出现的精度误差。
阅读全文
相关推荐





