
# 如何解决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)
```
