pg中的数字类型如下表:

名字 存储尺寸 描述 范围
smallint 2字节 小范围整数 -32768 to +32767
integer 4字节 整数的典型选择 -2147483648 to +2147483647
bigint 8字节 大范围整数 -9223372036854775808 to +9223372036854775807
decimal 可变 用户指定精度,精确 最高小数点前131072位,以及小数点后16383位
numeric 可变 用户指定精度,精确 最高小数点前131072位,以及小数点后16383位
real 4字节 可变精度,不精确 6位十进制精度
double precision 8字节 可变精度,不精确 15位十进制精度
smallserial 2字节 自动增加的小整数 1到32767
serial 4字节 自动增加的整数 1到2147483647
bigserial 8字节 自动增长的大整数 1到9223372036854775807

如果需要以极高的精度处理数据,或者以精确的精度存储数据,那么就使用numeric类型,它没有范围限制和精确的存储,代价是存储大小和处理速度,numeric类型上的算术运算比整数类型或者浮点数类型要慢很多。

对于定长的数字类型,类型越小,数据在磁盘和内存中占用的空间越小,同时,类型越小,可以存储的值范围越窄。而对于整数类型,较小的类型意味着较小的范围。

对于浮点类型,较小的类型表示精度较低。

”神奇“的四舍五入:

test=# SELECT 3.0::float8 * (1.0/5.0);?column?
--------------------0.6000000000000001
(1 row)
test=# SELECT 3.0::float8 * (1.0/5.0) <= 0.6;?column?
----------f
(1 row)

当系统处理货币时,对计算中的小偏差和适当舍入表示无法接受。精确的数学得出精确的结果。


test=# SELECT 3.0::numeric * (1.0/5.0);?column?
-------------------------0.600000000000000000000
(1 row)

所以官方文档也标明,进行精度要求高的计算时使用numeric类型。

这是因为numeric类型的舍入行为“远离零”,而double percision和float的舍入行为是“接近最近的偶数值”。

test=# SELECT x,
test-#   round(x::numeric) AS num_round,
test-#   round(x::double precision) AS dbl_round
test-# FROM generate_series(-3.5, 3.5, 1) as x;x   | num_round | dbl_round
------+-----------+------------3.5 |        -4 |        -4-2.5 |        -3 |        -2-1.5 |        -2 |        -2-0.5 |        -1 |        -00.5 |         1 |         01.5 |         2 |         22.5 |         3 |         23.5 |         4 |         4
(8 rows)

pg中的数字类型总结相关推荐

  1. python中的数字类型格式与运算_Python中的数字类型格式与运算

    出品 Python中的数字(Digital)与数学中的数字相同,可以通过各种各样的运算符实现各种计算,在Python中数字类型的数据格式分为以下几种: 1.整数型(integer) 2.浮点数(flo ...

  2. HTML5中的数字类型的输入框:数字选择器

    HTML5中的数字类型的输入框:数字选择器 html5 Input类型有如下几种: color.date.datetime.datetime-local.email month.number.rang ...

  3. Java中number数字类型的转换_Java下数字类型的转换 (转)

    Java下数字类型的转换 (转)[@more@] 作者:家居猫 各种数字类型转换成字符串型: String s = String.valueOf( value); // 其中 value 为任意一种数 ...

  4. python中加减乘除是什么数据类型_python中,数字类型计算

    说明: 今天在看python数字类型的操作,在此记录下. 操作过程: 1.数字的加减乘除 >>> 2 + 2 4 >>> 4 - 2 2 >>> ...

  5. html文本框最小数字,HTML5中的数字类型的输入框:数字选择器

    要求用户输入数字要比输入Email地址或者网址的情况麻烦得多.比如,是要求用户输入具体的-1呢?还是1~10范围内的数字,是要求 输入7呢?还是小数又或者是圆周率...怎么样,也许你已经感觉到麻烦了吧 ...

  6. mysql数字_MySQL 中的数字类型

    MySQL 中数据类型常用的就三大类: 数字类型/numeric types 日期和时间/date and time types 字符类型/string (character and byte) ty ...

  7. Foundation框架中的数字类型:NSNmuber(二)

    看官们,我们在上一章回中对NSNumber类型做了详细的分析,本章回中我们将给出完整的代码,请大家参考: #import<Foundation/Foundation.h>int main( ...

  8. Java 中各数字类型(Double, Float, Long, Integer) 之间以及字符串之间的转换

    1. 数字类型间的转换 类型 double, float, long, int 都是 Java 中原始的数字类型. Java 提供了这原始类型的包装类, 并提供了一些便于使用的方法比如类型的转换, 通 ...

  9. python中的数字类型格式与运算,python数字数据类型

    python数字数据类型 1. 数字 在我们很小的时候,父母便开始教我们数数,从1数到10,聪明的孩子可以数的更多. python支持3中数值类型 整型(int),通常称之为整型或整数,这个概念与我们 ...

最新文章

  1. 科学家都解决不了的5个“简单”算法,你不来看看?
  2. SQLServer中Case的用法
  3. 修改Idea默认的全局设置,如Maven等
  4. mysql某月按小时统计数据_Mysql按周,按月,按日,按小时分组统计数据
  5. CodeForces - 1324F Maximum White Subtree(树形dp)
  6. 去杠杆高歌猛进,借呗会倒闭吗?
  7. arcgis镜像图形工具,ArcGis图形编辑
  8. Win11系统如何打开地雷游戏 Win11打开扫雷游戏的教程
  9. opencv引起的、破坏了电脑系统环境变量的处理办法
  10. 从零开始学androidBroadCast广播.四十五.
  11. 分享一个关于跨境电商的竞品分析报告
  12. 如何用photoshop做24色环_PS色相环制作方法和教程
  13. 2013年度中国优秀开源项目入围奖
  14. android开发apk捆绑,Android 下 APK 捆绑器的实现
  15. Supported media formats (支持的媒体格式)
  16. Python如何利用双色球每天薅个煎饼果子
  17. EdgeInsets.symmetric()
  18. 参加国企面试需要注意的点有哪些?
  19. STM32中文参考手册下载地址
  20. 树莓派3 基于Ubuntu mate 16.04的调用中文输入法

热门文章

  1. 第六课 利用站群赚钱的思路分析
  2. 互联网晚报 | 中电科确认不存在临时工情况,单位已报案;360董事长周鸿祎1年内没有减持计划;LV老板登顶福布斯,中国首富还是他...
  3. beta应用程序ios_通过构建简单的食谱应用程序来了解iOS最佳做法
  4. 如何设计一个高性能网关?
  5. 2022浙江省税务系统事业单位招聘仿真试题及答案(多选题)
  6. 战地3服务器网络不显示,战地3今天更新了?发现服务器进不去了,贴个官方消息。...
  7. 上传文件报413 Request Entity Too Large错误解决办法
  8. 实战:拆解拼多多13个拉新裂变的环节 小程序的增长套路
  9. Attention Is All You Need (NIPS 2017)
  10. gg修改服务器钻石,六号特工GG修改金钱、钻石和基因等教程+免广告版本