代码之家  ›  专栏  ›  技术社区  ›  Jose Antonio Piedehierro Arias

PostgreSQL-圆形实数数据类型(是的,我知道数字存在)

  •  0
  • Jose Antonio Piedehierro Arias  · 技术社区  · 3 年前

    我知道实际数据类型不准确,通常我应该使用货币 数字的 数据类型。 但是,我被要求做一些事情,其中一个条件是数据类型是真实的。 当我试着去做 round((....),2) 例如,对于这种数据类型,我得到的round函数不存在。 我的问题是,在不进行转换的情况下,是否有任何函数可以返回四舍五入为0的实际值?

    非常感谢!1.

    3 回复  |  直到 3 年前
        1
  •  2
  •   Jesusbrother    3 年前

    如你所见 here 没有任何类型的石膏是无法旋转的。只有两种功能存在:

    四舍五入(dp或数字) -四舍五入到最接近的整数

    四舍五入(v数字,s整数) -小数点后四舍五入

    真=双精度。所以,如果你想得到一些小数位,你还是需要使用convert:

    select round('123.456789'::real::numeric,2)
    

    upd。 注意四舍五入+大实数转换:

    select round('12122156.567'::real::numeric, 2); --< rounding up to 6 digits, result = 12122200
    select round('12122156.567'::real::DOUBLE PRECISION::numeric,2); --<< rounding result = 12122157
    

    或者可以使用不带小数点的四舍五入:

    select round('123.456789'::real)
    
        2
  •  0
  •   BenHeb    3 年前

    在圆点后将数值舍入为0?

    ROUND(numeric_value, 0)
    
        3
  •  0
  •   Jose Antonio Piedehierro Arias    3 年前

    经过调查,转换为::numeric是唯一的解决方法

    推荐文章