杂记 › 资源分享 › 15 份乐谱 PDF 拖进文件信息页:最大那份 876.8 KB 距换档还差 150729 字节,平均大小还要再取整一次

15 份乐谱 PDF 拖进文件信息页:最大那份 876.8 KB 距换档还差 150729 字节,平均大小还要再取整一次

15 份公有领域乐谱 PDF 丢进文件信息页,大小列全落 KB 档,最大那份距换档还差 150729 字节;显示串还原回字节的绝对漂移 350 字节,平均大小还要再取整一次,导出行序跟的是投递序。

15 份乐谱 PDF 丢进文件信息页,大小那一列有意见

起因只是存档:两部公有领域乐谱一共 15 份 PDF,想把文件名和大小抄成一张表,就整批丢进了文件信息页。统计条给出 文件总数:15 / 总大小:5.06 MB / 平均大小:345.4 KB,可下面 15 行的大小列一格 MB 都没有,最小那份也没落进 B 档——同一屏两套单位。

被测的是文件信息读取:模板 11104 字节 / 275 个换行、CRLF 0,script 段 6860 字节 167 行自第 108 行起,10 个函数原样进纯 Node 探针、toString 回查逐字命中,阈值没动、Math.round 没摘。

三阈值两精度,顶格还不换档

大小列只由一个 formatSize(第 162–167 行)决定:阈值 1024 / 1048576 / 1073741824,KB 档 toFixed(1)、MB 与 GB 档 toFixed(2),最低的 B 档在第 163 行原样拼接、一位小数都不做。

输入字节显示串口径
10231023 BB 档不取整
10241.0 KB换档留 1 位
10485751024.0 KB顶格不换档
10485761.00 MB换档留 2 位
10737418231024.00 MB顶格不换档
10737418241.00 GB第三档
1023.91023.9 B小数尾巴照抄

我这 15 份全夹在 1024 与 1048576 之间,整列走的是 toFixed(1):最小 42286 → 41.3 KB,距下界还有 41262 字节;最大 897847 → 876.8 KB,距换档还差 150729 字节(约 147.2 KB);MB 档 0 份、B 档 0 份。文案那句「自动换算KB/MB/GB」在这批只兑现中间一档,GB 档从未被触到,漏掉的恰是最低那档 B 与两档精度。

显示串还原回字节:绝对漂移 350

把显示串按档位乘回去(KB 档 ×1024)与真实字节对账:Σ真实 5305582、Σ还原 5305548.8,净漂移 -33.2 字节,逐份绝对漂移之和 350 字节,最大单份 -48——149552 显示 146.0 KB、还原 149504。

  • 88176 → 86.1 KB → 88166.4,差 -9.6
  • 814854 → 795.8 KB → 814899.2,差 +45.2
  • 897847 → 876.8 KB → 897843.2,差 -3.8

净漂移只有 33.2 是靠正负抵消,350 才是这一列抹掉的量。63004 与 62934 更绝:两份都写作 61.5 KB、还原同为 62976,屏幕上分不出来。

跨 4 份样本的还原账(全列 KB 档) 真实字节 显示串 还原字节 差额 42286 41.3 KB 42291.2 +5.2 149552 146.0 KB 149504 -48.0 814854 795.8 KB 814899.2 +45.2 897847 876.8 KB 897843.2 -3.8

图 1:显示串到字节的往返,最坏单份 -48 字节。

平均大小取整两次,只有特定样本才露脸

统计条走第 227–229 行的三步:totalSize 直接累加原始字节,avgSize = Math.round(totalSize / total),这个整数再进 formatSize——同一次显示里两轮取整。舒伯特 12 份的 totalSize 5141254、真实平均 428437.8333333333,round 成 428438,位移 0.16666666668606922 字节,显示 418.4 KB;摘掉 Math.round 仍是 418.4 KB,本批完全看不见第二次取整。

露脸要造样本:5 份共 5376 字节、平均 1075.2,页面写 1.0 KB,不取整是 1.1 KB,真实只差 0.2、显示差一整档小数;4 份共 401 字节、平均 100.25,B 档写 100 B,不取整是 100.25 B。差别在于 B 档不做 toFixed,而 KB 档的步长是 0.1 KB = 102.4 字节,只有真实平均值压在换串线上时那零点几字节才够推过去。

统计行里 MB 与 KB 同屏

三行各进各的 formatSize,单位当场分家:舒伯特是 总大小:4.90 MB 配 平均大小:418.4 KB;15 份合投是 5.06 MB 配 345.4 KB;只有舒曼 3 份两行都在 KB(160.5 KB 配 53.5 KB)。合投的 5305582 正是 5141254 加 164328,与逐份相加闭合——我拖的只有 PDF,目录里那几个附属文本没进来,所以读数是净和;整目录 5161096 与 172148 一起投的话会写成 4.92 MB 与 168.1 KB。

固定 totalSize 5141254,只变份数 n 份数 n 平均行 总大小行 单位是否同档 2 2.45 MB 4.90 MB 同档 4 1.23 MB 4.90 MB 同档 5 1004.2 KB 4.90 MB 从这里开始混档 12 418.4 KB 4.90 MB 本批真实读数

图 2:同一个 5141254,n 从 4 到 5 就把平均行推进另一个单位,总大小行一动不动。

资源页展示字段那两条是「PDF 4.90 MB」与「PDF 0.16 MB」,四舍五入到两位的展示口径,不是实测字节。取舒伯特艺术歌曲那份公有领域乐谱的 12 份净和实测 5141254,而 4.90 MB 还原 5138022.4,差 -3231.6 字节、同档不同串,对整目录 5161096 差 -23073.6 字节;取舒曼童年情景那份公有领域乐谱的 3 份净和 164328、本页写 160.5 KB,0.16 MB 还原 167772.16,差 +3444.16 字节还跨了档。

Q:大小列那一格能反推回原始字节吗?

只能反推到显示精度那层:15 份还原和 5305548.8、真实和 5305582,净差 -33.2 字节、单份最大 -48。

Q:为什么总大小是 MB、平均大小却是 KB?

两行各进各的 formatSize,档位跟着各自的数值走。同一份 totalSize 5141254,份数从 4 加到 5,平均行就从 1.23 MB 掉到 1004.2 KB,总大小行仍在 MB。

Q:平均大小的两轮取整平时看不出?

平时看不出来:428437.8333333333 到 428438 的位移够不着 toFixed(1) 的换串线,摘掉 Math.round 仍是 418.4 KB;1075.2 与 100.25 这两个构造样本才把两轮分开。

Q:排过序再导出,文件里也是排过的序?

不是。导出走投递序,排过序的只是表格那份副本:实测表格首行 01_SchumannOp15No01-a4.pdf、导出首行 01_einsamkeit-a4.pdf。

📎 相关文章

两部古籍 555733 字节合成一份:面板 2334 行、187299 字,四档分隔与文件名标记各加几格 2026-11-13 两部公版古籍整本喂进文本读取页:唐诗 81474 字节与九章 78497 字节的行数、码元与码点差、以及整篇按 GBK 误读的替换字符账 2026-11-12 同一页里的三套哈希实现:两部公版 TXT 当字节语料,把 file-md5 的分块账与编码变异逐字量一遍 2026-11-09 《声律启蒙》《笠翁对韵》整档喂进文本对比页:公共 154 行、新增 665 删除 401,而统计只给两个数 2026-11-08 《笠翁对韵》里有 21 个字转不出拼音:8026 键表实测命中 7160、多音 232 次 2026-11-07