百分比计算器(是百分之几 · 增减后 · 涨跌幅 · 反推原价)
按真实问法分四块:87 是 120 的百分之几、120 涨 15% 之后是多少、从 120 降到 102 变化了百分之几、打八折后 240 求原价。边填边出结果,除数为 0 会说明原因,结果按有效数字清理浮点尾巴。全程在你自己的浏览器里算。
「X 是 Y 的百分之几」
「A 增加 / 减少 B% 之后是多少」
「从 A 到 B,变化了百分之几」
「打八折后 240,原价是多少」
四组算好的答案
| 问法 | 填这两个数 | 结果 | 同时给出 |
|---|---|---|---|
| 87 是 120 的百分之几 | X 87,Y 120 | 72.50% | 72.5% · 0.725 |
| 120 减少 15% | A 120,B -15 | 102 | -18 · 0.85 倍 |
| 从 120 降到 102 | A 120,B 102 | -15.00% | -18 · 下降 |
| 打八折后是 240,求原价 | 现价 240,优惠 20 | 300 | +60 · 80% |
四个式子,百分点不是百分比
四句问法,四个式子
| 你真正在问 | 式子 | 例 |
|---|---|---|
| 87 是 120 的百分之几 | X ÷ Y × 100 | 87 ÷ 120 × 100 = 72.5% |
| 120 涨 15% 后是多少 | A × (1 + B ÷ 100) | 120 × 1.15 = 138 |
| 从 120 降到 102,变化了百分之几 | (B − A) ÷ A × 100 | −15% |
| 打八折后 240,原价多少 | 现价 ÷ (1 − 折扣率) | 240 ÷ 0.8 = 300 |
前两块的除法分别除以「总量 Y」和「100」,第三块必须除以起始值 A(换成 B 就成了另一道题,分母选错是最常见的错解)。第四块是第二块的逆运算,用除法而不是再乘一次。任何一块遇到除数为 0 都会直接报错并讲清原因,不会塞给你一个 0% 或 Infinity。
涨 10% 再跌 10%,回不到原价
100 → 110 → 99。两次的 10% 数量根本不同:第一次取的是 10,第二次在已经涨过的 110 上取,是 11。写成乘法最清楚:1.1 × 0.9 = 0.99,交换顺序结果一样,都少 1%。反过来算也成立:涨 10% 之后要跌回原价,需要跌 10 ÷ 110 ≈ 9.09%,而不是 10%。涨跌幅对称是错觉,基数每变一次,百分号的意义就变一次。
百分点不是百分比
利率从 5% 调到 8%:直接相减是 3 个百分点,相对变化是 3 ÷ 5 = 60%。说成「涨了 3%」会被理解成 5% × 1.03 = 5.15%,差了一个数量级的观感。所以利率、失业率、命中率这类本身已是百分数的指标,变动都用「个百分点」表述;第三块给的是百分比变化,要百分点请直接把两个数相减。
连续折扣和复合增长按乘法
「先打 8 折、再减 20%」是 0.8 × 0.8 = 0.64,即打 6.4 折,不是「一共优惠 40%」;n 期复合增长是 (1 + r)^n,把每年的 r 直接相加只在 r 很小、年数很短时近似成立。反推原价同理得用除法:折后 240、打八折是 240 ÷ 0.8 = 300,拿 240 × 1.2 会得到 288,差 12 元——减法和除法的差别就在这里。
常见问题
Q:含税价 113,怎么反推不含税价? 第四块把折扣率填成 −13(含税等于在原价上加了 13%),得 113 ÷ 1.13 = 100。填 13 是错的,那会算成 113 ÷ 0.87 ≈ 130。
Q:起始值是负数,增长率怎么算? 式子照 (B − A) ÷ A 算,但符号和直觉相反:从 −100 到 −50,数值在上升(差值 +50),式子给出 −50%。日常说法是「亏损收窄 50%」,方向请以「差值 B − A」那一栏为准。
Q:为什么显示 72.5% 而不是 72.500000001? JavaScript 用 IEEE 754 双精度,0.1 + 0.2 会得到 0.30000000000000004。这里统一按 12 位有效数字清掉这些尾巴,卡片默认再取 2 位小数,旁边「更精确」那张留着清理后的完整值。要分毫不差的金额累加,请换表格软件或十进制库。四块里的数字都在你自己的浏览器中算完,输入的内容不会离开这台设备。