整数与精确数值与浮点与舍入

共 31 题
#

1. MySQL 中 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT 的存储空间与方言特性?

A INT 类型存储 8 个字节
B BIGINT 存储 2 个字节
C MEDIUMINT 存储 4 个字节
D TINYINT 存储 1 字节,取值范围为 -128 到 127 ✓ 正确答案
#

2. NUMERIC/DECIMAL 精确数值的存储与精度损失?

A 它与 FLOAT 一样存在二进制精度损失
B 它只能存储整数
C 它以十进制整数形式存储,精确无舍入误差 ✓ 正确答案
D 它的存储空间固定为 8 字节
#

3. PostgreSQL 中 smallint(int2)、int(int4)、bigint(int8)的存储空间(2、4、8 字节)与取值范围?

A 8 字节 ✓ 正确答案
B 4 字节
C 2 字节
D 16 字节
#

4. 整数溢出的检测,PostgreSQL 整数溢出报错 vs MySQL 的 wrap-around?

A PostgreSQL 采用回绕处理
B MySQL 在严格模式下对溢出报错 ✓ 正确答案
C 两者行为完全一致
D PostgreSQL 静默回绕
#

5. 货币类型 MONEY 的局限(精度、地区)与 NUMERIC 的取舍?

A 它的精度与 lc_monetary 区域设置有关 ✓ 正确答案
B 它的精度全球化固定为 2 位
C 它比 NUMERIC 更可移植
D 它不依赖任何区域设置
#

6. INT 与 BIGINT 的选择,未来数据增长估算?

A INT 最大约 21 亿,足够应对所有场景
B 主键类型后期迁移成本高,应预留增长空间 ✓ 正确答案
C BIGINT 一定优于 INT
D BIGINT 只占 4 字节
#

7. DECIMAL 与 NUMERIC 的关系?

A 在 PostgreSQL 与 MySQL 中两者完全等价 ✓ 正确答案
B 两者是不同行为的数据类型
C NUMERIC 只能存整数
D DECIMAL 存在浮点误差
#

8. MySQL 中 INT(11) 的 11 含义?

A 表示存储的最大字节数
B 是显示宽度,不影响存储范围 ✓ 正确答案
C 表示取值范围的大小
D 表示精度小数位
#

9. MySQL 的 UNSIGNED INT 的应用?

A 它允许负数但范围更小
B 它把非负范围翻倍,适合自增主键 ✓ 正确答案
C 它增大存储字节数
D PostgreSQL 原生支持 UNSIGNED
#

10. NUMERIC 与浮点的取舍(精确 vs 性能)?

A 浮点无精度损失
B NUMERIC 精度高但性能较慢 ✓ 正确答案
C NUMERIC 性能一定优于浮点
D 两者完全等价
#

11. NUMERIC(10,2) 的精度含义?

A 8 位 ✓ 正确答案
B 2 位
C 10 位
D 12 位
#

12. PostgreSQL 中 INT 类型的存储大小?

A 1 字节
B 2 字节
C 4 字节 ✓ 正确答案
D 8 字节
#

13. IEEE 754 双精度浮点数(DOUBLE PRECISION、FLOAT8)的精度损失与 0.1 + 0.2 ≠ 0.3 陷阱?

A 数据库计算错误
B 双精度位数太少
C 十进制小数在二进制浮点中无法精确表示 ✓ 正确答案
D 运算符优先级错误
#

14. 浮点聚合(AVG、SUM)的精度损失与替代方案(NUMERIC)?

A 单值求和误差会累积放大 ✓ 正确答案
B 浮点求和完全精确
C NUMERIC 聚合更慢且不精确
D 误差只影响整数
#

15. PostgreSQL 中 NUMERIC 与 DOUBLE PRECISION 的性能差异?

A NUMERIC 因硬件加速而更快
B NUMERIC 适合科学计算
C 两者性能完全相同
D DOUBLE PRECISION 利用硬件浮点通常更快 ✓ 正确答案
#

16. 货币存储为何推荐 NUMERIC(19,4)?

A 4 位小数无法存储金额
B 2 位小数更精确
C 19 位只能存整数
D 4 位小数提供中间精度缓冲,减少舍入误差 ✓ 正确答案
#

17. MySQL FLOAT 与 DOUBLE 的方言差异?

A FLOAT 占 8 字节,DOUBLE 占 4 字节
B FLOAT(p) 中 p>24 时仍用单精度
C 两者都是精确类型
D FLOAT 占 4 字节,DOUBLE 占 8 字节 ✓ 正确答案
#

18. MySQL 中 FLOAT(p) 的精度 p 含义?

A p 表示十进制显示位数
B p 与底层类型无关
C p 表示存储字节数
D p<=24 时用单精度,p>24 时用双精度 ✓ 正确答案
#

19. MySQL 的 DOUBLE 与 FLOAT 索引?

A 等值比较因近似值可能失效,更适合范围查询 ✓ 正确答案
B 浮点列不能建索引
C 浮点索引保证精确匹配
D 索引会使浮点列变为精确
#

20. PostgreSQL 中 numeric 与 float8 的隐式转换?

A float8 转 numeric 是有损的
B 转换规则与精度无关
C 两者可无条件隐式互转
D numeric 转 float8 通常需显式 CAST ✓ 正确答案
#

21. 浮点聚合的替代品(sum 转 NUMERIC)?

A 直接对浮点求和
B 聚合时 SUM(amount::numeric) ✓ 正确答案
C 用 AVG 代替 SUM
D 无法规避
#

22. 序列类型 SMALLSERIAL、SERIAL、BIGSERIAL 与显式 CREATE SEQUENCE 的取舍?

A SERIAL 自动创建并关联序列,是简化形式 ✓ 正确答案
B SERIAL 不支持 bigint
C CREATE SEQUENCE 无法自定义步长
D 两者完全等价
#

23. INTEGER 类型与 32 位/64 位系统关系?

A 64 位系统上 INTEGER 占 8 字节
B INTEGER 大小随系统变化
C 32 位系统上 INTEGER 只有 2 字节
D 数据库 INTEGER 固定 4 字节,与平台无关 ✓ 正确答案
#

24. Java/SQL 的整型映射(Integer、Long、BigInteger)?

A BIGINT ✓ 正确答案
B SMALLINT
C INTEGER
D TINYINT
#

25. bigint 的最大值 9223372036854775807?

A 2^31-1
B 2^63-1 ✓ 正确答案
C 2^64-1
D 2^32-1
#

26. smallint 的范围 -32768 到 32767?

A -32768 到 32767 ✓ 正确答案
B -128 到 127
C -2147483648 到 2147483647
D -2^63 到 2^63-1
#

27. REAL(FLOAT4)与 DOUBLE PRECISION(FLOAT8)的存储与精度对比?

A REAL 占 8 字节
B DOUBLE PRECISION 约 15-16 位有效数字,占 8 字节 ✓ 正确答案
C 两者精度相同
D REAL 是精确类型
#

28. 浮点数的特殊值,Infinity、-Infinity、NaN 在数据库中的存储与比较?

A NaN 等于自身
B NaN 小于所有数值
C NaN 与任何值(包括自身)相等比较都为 false ✓ 正确答案
D NaN 无法存储
#

29. 舍入模式,ROUND 四舍五入 vs 银行家舍入(ROUND HALF EVEN)的差异?

A 恰好 .5 时舍入到偶数以消除偏差 ✓ 正确答案
B .5 一律进位
C 与四舍五入完全相同
D 只用于负数
#

30. 1 + 0.2 在 DOUBLE PRECISION 的结果?

A 1.2 的二进制近似值,可能不等于 1.2 ✓ 正确答案
B 精确等于 1.2
C 1.22
D 报错
#

31. ROUND(2.5) 与 ROUND(3.5) 的银行家舍入?

A 3
B 无法确定
C 2.5
D 2 ✓ 正确答案