变化、差异,以及底下那个基数

发布于 2026-11-01 · 最近复核 2026-11-06

几乎每一场关于百分比的争论,真正争的都是两句没有说出口的话:哪个数是基数,以及问的是「变化」还是「差异」。把这两件事摆到桌面上,算术就只剩一次乘法;漏掉它们,同一对数会在一份报告里是涨、在另一份里是跌,而且两边都没算错。这一篇讲的就是那两个缺掉的词,以及紧跟着它们的第三场争论——关于位数的那一场。

百分比就是一个分母为一百的分数

百分比只是「分母是一百」这个分数的简写,没有别的含义。所以 15% of 300 是一次乘法:300 乘 15 再除以 100,得 45。把同一个数写成最简分数是 3/20——这正是计算器要在答案旁边印一个分数的原因:同一句话,数字更小,心算才做得下去。分数也正是「精确性」这个问题的起点:3/20 是精确的,而任何印成小数的百分比都只是某个东西的四舍五入版。

反过来问——一个数占另一个数的百分之几——是一次除法,基数也就无法回避。15 占 300 是 5%,可 300 占 15 是 2000%。同一对数,反过来读,答案差了两个数量级。一个只印出其中一个数字、却不说自己除以谁的页面,没有回答问题:它只回答了某一个版本的问题。

变化率是从起点量起的

变化率用差值除以你出发时的那个值,所以它不对称是有意的:100 涨到 125 是 25%,同一对数反过来,125 跌回 100,是 -20%。两个数都不错,而这正是陷阱——一份报告先说「涨了 25%」,等数字回到原点之后又说「只跌了 20%」,它其实对同一对数用了两个不同的分母。

翻倍与腰斩是最干净的例子:100% 的涨幅把 100 变成 200,50% 的跌幅把它变回去。两个百分比不一样,因为百分比永远是「某个东西」的百分比,而那个「某个东西」在两次方向里换过了。

本身就是一个百分比的量——一个比率、一个占比、一个分数、一个税率档——会同时动两种数:从 10% 到 8% 是掉了 2 个百分点,相对起点也是 20% 的跌幅。两个说法都对,也都该印出来;只挑一个还不注明是哪一个的标题,挑的其实是听起来更大的那个。

差异率故意没有起点

当两个数都不是起点——两个价格、对同一个量的两次测量、民调里的两个候选人——诚实的量法是差异率:差值除以两者的平均值。100 与 125 之间是 22.22%,正着反着都是这个数,而这正是变化率没有的性质。它比 25% 大、比 20% 小,它只说一件事:这两个数字相距 22.22%。

由此得出一条枯燥但管用的规矩:比任何两个数之前,先说出基数。有起点就用变化率,没有起点就用差异率;如果那个量本身就是百分比,就说明你要的是「点」还是相对变化,或者像本站这样两个一起印。

为什么这些位数要用 BigInt 算

二进制浮点数存不下多数的十进制小数,而后果不是第七位上的舍入误差,是一眼就能看出错的文字:在 JavaScript 里,0.1 加 0.2 得到 0.30000000000000004。把这个印出来的页面,等于对访客自己的输入说了一句假话。同一次加法改在「位」上做——把 0.1 和 0.2 读成整数除以十的幂,按整数相加,再把小数点放回该在的位置——结果是 0.3,本站用 BigInt 做的就是这个。

同一个选择还决定了分数长什么样。0.125 按位读就是 125 除以 1000,约分后正好是 1/8,精确,没有舍入要解释。三分之一则根本写不成有限小数,而诚实的说法是循环节记法:1/3 就是 0.(3),意思是那个 3 一直重复下去。任何有限的 3 都比三分之一略小,所以印六位 3 然后说「这就是答案」是个小谎;印 0.(3) 才是真话,只多一个字符。

浮点并没有被全面禁用:答案本来就是一个四舍五入过的数的那部分——变化率、占比、印到四位小数的百分比——仍然用它。规则不是「不准用浮点」,而是「位数本身就是答案的地方,不许用浮点」。

这些数字从哪里来

这一篇没有说什么

它不是统计课:小样本的百分比变化仍然是小样本,这一页不会告诉一个差异是否显著。它也不讲复利式的叠乘——连续几次变化是相乘而不是相加,25% 的涨加上 20% 的跌并不会回到原点,那还是同一个基数问题,只是又往前走了一步。它同样不规定金钱上的舍入政策:折扣、AA 制的小费、税行要决定哪一分钱往哪边走,那是印货币的那一页该决定的事,不是这一篇。

到 百分比计算器 里自己算一遍,或者把同一套算术用到钱上: 小费计算器 与 增值税计算器。

以上只是解释与估算——不构成统计或财务建议。 阅读完整免责声明。