是派小星呀 2023-02-06 21:18 采纳率: 63.6%
浏览 139
已结题

数据库转换数据不对问题

字符串类型的 4195.40 转成 浮点型 ,结果发现不对,请问这是什么问题,有什么解决办法吗

select '4195.40' :: FLOAT
  • 写回答

8条回答 默认 最新

  • 高铭杰 腾讯数据库内核开发工程师 2023-02-07 10:25
    关注

    你给出的结果是因为使用了不精确类型被PG把结果改写了。
    建议理解一下postgresql的几种浮点型,避免以后使用上踩坑。

    1. Postgresql提供四类浮点型,按功能看可以分成两类:

    2. 关于float(n)的写法,文档8.1.3节有详细解析:http://www.postgres.cn/docs/14/datatype-numeric.html

      • PostgreSQL还支持 SQL 标准表示法float和float§用于声明非精确的数字类型。在这里,p指定以二进制位表示的最低可接受精度。 在选取real类型的时候,PostgreSQL接受float(1)到float(24),在选取double precision的时候,接受float(25)到float(53)。在允许范围之外的p值将导致一个错误。没有指定精度的float将被当作是double precision。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 2月15日
  • 已采纳回答 2月7日
  • 修改了问题 2月7日
  • 创建了问题 2月6日