Skip to content
败犬日报 2025-11-13

败犬日报 2025-11-13

1. double 有多少位十进制有效数字

15。

众所周知 double 有 1 bit 符号位,11 bit 指数位,52 bit 尾数位,决定有效数字的是尾数。

一个估算思路是求 double 能精确表示的整数范围。由于 IEEE 754 规定尾数之前还有一个隐含的“1”,所以答案是 (111...1)2(一共 53 个 1)即 25319×1015。这样就大致得到 15 个有效数字了。

(注意这只是一个估算,严谨证明留作课后习题)

2. double 能提供 15 位有效数字,是不是 1e-16 和 0 区分不出来

不是,1e-16 是一位有效数字。

正确的是 1 + 1e-16 和 1 分不出来。

python 测试如下:

python
>>> 1 + 1e-15 == 1
False
>>> 1 + 1e-16 == 1
True

3. MSVC 怎么不能 std::println 一个 C 数组

MSVC 还没实现呢。