更新时间:2026-07-28 GMT+08:00
如何解决power()函数计算结果数值太大时的误差?
答:一般power()函数计算结果大数值时有误差,例如2的60次方,准确值为1152921504606846976,使用SELECT power(2,60)的值为1.15292150460685e+18存在误差。具体解决办法如下:
gaussdb=# SELECT power(2,60); power ---------------------- 1.15292150460685e+18 (1 row) --如下查询结果表示:两个double precision类型的入参时返回值也是double precision类型,该类型精确到小数点后16位。 gaussdb=# \df power; List of functions Schema | Name | Result data type | Argument data types | Type | fencedmode | propackage | prokind ------------+-------+------------------+------------------------------------+--------+------------+------------+--------- pg_catalog | power | double precision | double precision, double precision | normal | f | f | f pg_catalog | power | numeric | numeric, numeric | normal | f | f | f (2 rows) --使用如下方式查询。 gaussdb=# SELECT power(2::numeric,60::numeric); power -------------------------------------- 1152921504606846976.0000000000000000 (1 row) --使用round()函数取消小数点。 gaussdb=# SELECT round(power(2::numeric,60::numeric),0); round --------------------- 1152921504606846976 (1 row)
父主题: 其他