圆周率 π 与自然常数 e 查询
查询所有处理都在浏览器本地完成,数据不上传服务器
三种查法,对应三种真实需求: 取前 N 位 —— 最常见的一档(「π 的前 100 位」,背下来应付面试的人不少)。 从第 N 位起取若干位 —— 查任意一段,比如第 1000 到 1050 位。 找一个数字串 —— 「我的生日 19900307 出现在 π 的哪一位」。这是这个页面最常被拿来玩的一件事:在每一万位里,任意一个 4 位数平均出现约一次,7 位数则平均每 1000 万个位置才出现一次 —— 所以短串几乎一定找得到,长的就要碰运气了,而工具会如实告诉你找没找到。 位数只数小数部分。 「第 1 位」指的是小数点后第一位,不是整数位 `3`。这是查圆周率位数的通行口径(背 π 的人说「第 100 位」,说的都是小数部分),按含整数位来数的话,全世界所有「π 的第 N 位」的资料都要错开一位。 内置的一万位(π)与五千位(e)用四组互不相干的恒等式交叉验证过,前 50 位另与公开值核对过 —— 出处写在数据文件里,不需要「相信这份常量」。
功能
- π 内置一万位小数、e 内置五千位小数
- 三种查法:前 N 位、第 N 位起的若干位、查找一个数字串
- 查找会给出全部出现位置(含重叠的命中),并说明共有几处
- 位数只数小数部分,与「背 π 到第 100 位」的口径一致
- 数据用四组独立的恒等式交叉验证过,前 50 位与公开值一致
- 查找接受带空格、逗号的输入
- 要的位数超过内置位数时会说清只有多少位
- 全部在本机计算,不请求任何接口
使用方法
- 选常数:π 还是 e
- 选查法:取前 N 位、从第 N 位起,还是找一个数字串
- 填位数或要查的数字串
- 点「复制」取走结果
常见问题
- 为什么只到一万位?
- 因为再往上就得换存储方式了。一万位是 10 KB 文本,随页面加载几乎无感;而「查第 50000 位」这种需求,靠内置数据是取不到的 —— 要么把常量写到几十万位(几百 KB),要么改用 spigot 算法现算(每次几百毫秒)。两种做法服务的都是极少数场景,而当前的取舍是「打开即用、零延迟」。真需要更多位数时,那是一个可以单独做一档的决定。
- 查找会不会漏掉重叠的出现?
- 不会,重叠的命中也算。比如在 `111` 里找 `11`,第 1 位与第 2 位各出现一次,两处都算。只报不重叠的那种写法会漏掉一半的命中,而用户是拿着位置去核对的 —— 少报一处,他就会以为那里不是要找的串。命中很多时(比如查单个数字 `1`)只列前 20 处,并说明还有多少处。
- 内置的位数靠谱吗?
- 靠谱,而且这个不需要你相信。数据是用 Machin 公式算出来的,然后用三组完全不同的恒等式(欧拉公式、另一组欧拉式、Störmer 公式)各复算了一遍,一万位逐位一致;e 用精确有理数求和(公分母 4000!)复算,与逐级数一致。另外两者的前 50 位都与公开可查的值核对过。`constant-digits.spec.ts` 会把前 100 位与已知值比对,以后谁改了数据、手滑一位,测试立刻红。
相关工具
蒙特卡罗估算
生成器往正方形里随机撒点,用落在圆内的比例估算 π,并按 10 的幂列出收敛过程。适合看随机算法的精度为什么爬得慢。
进制转换
转换在二、八、十、十六、36、64 进制之间互转,六种结果一次全部给出,19 位的雪花 ID 也能一位不差。全部在浏览器本地完成。
随机数生成
生成器生成随机整数或小数:范围、个数、小数位数可调,还能去重、排序、按二/八/十六进制输出。随机源取自浏览器的加密随机数。
元素周期表
查询查任意元素的原子序数、中英日文名称、相对原子质量、分类、周期、族与电子排布;也可按周期、区间或分类列出整组。
纸张尺寸
查询A、B、C 系列与北美纸张尺寸的毫米、厘米、英寸,以及 72 / 150 / 300 DPI 下的像素值。全部在浏览器本地完成,离线可用。
生肖查询
查询输入年份查生肖与干支(天干地支),或输入生肖名反查年份。同时列出前后各若干年的年份,并说明农历年的边界。