0

所以我有一个问题,我在表中插入了一些值,这些值自动转换为科学计数法(例如:8.24e+04)有谁知道如何恢复原始值或如何将原始值保留在表中?

我使用双精度作为列的数据类型,我只是注意到双精度数据类型经常将长数值转换为科学计数法。

这是我插入一些值后表格的样子

test=# select * from demo;
| string_col |        values         |
|------------|-----------------------|
| Rocket     |          123228435521 |
| Test       |        13328422942213 |
| Power      | 1.243343991231232e+15 |
| Pull       | 1.233433459353712e+15 |
| Drag       |         1244375399128 |

edb=# \d+ demo;
                                             Table "public.demo"
   Column   |         Type          | Collation | Nullable | Default | Storage  | Stats target | Description
------------+-----------------------+-----------+----------+---------+----------+--------------+-------------
 string_col | character varying(20) |           |          |         | extended |              |
 values     | double precision      |           |          |         | plain    |              |
Access method: heap

这只是我用来在这里解释我的问题的一些虚拟表。

4

1 回答 1

0

to_char如果您希望它采用特定格式,则必须使用它来格式化数字:

SELECT 31672516735473059594023526::double precision,
       to_char(
          31672516735473059594023526::double precision,
          '999999999999999999999999999.99999999999999FM'
       );

        float8         │          to_char           
═══════════════════════╪════════════════════════════
 3.167251673547306e+25 │ 31672516735473058997862400
(1 row)

结果不准确,因为精度double precision不够高。

如果您不希望出现舍入错误并且也想避免使用科学记数法,请改用数据类型numeric

于 2021-09-23T14:21:13.427 回答