百分比折扣计算器
结果
省下
- 实付
- 56.00
- 实付占原价
- 70.00%
打一个折扣只有一步乘法,所以这个计算器值得做的地方不是算法,而是把那句话里藏着的两个数都摆出来。打七折说的是砍掉三成,同时说的也是还要付七成,商家用哪一半取决于哪一半听起来更好。这一页把三个数一起给你:这一刀砍掉了多少钱、剩下要付多少、以及你还付着原价的几成,于是用其中一种说法报出来的价,不用心算就能读成另一种说法。
原价 100 时几种常见折扣率各是多少
| 折扣率 | 砍掉的钱 | 实付 |
|---|---|---|
| 10 | 10 | 90 |
| 25 | 25 | 75 |
| 50 | 50 | 50 |
| 75 | 75 | 25 |
每一行都把原价锁在 100,这是这张表一眼能读的原因:第一列同时也是砍掉的钱,因为一百的百分之几就是那个几本身。表是沿折扣率铺开的,横着读一行得到的就是这一页讲的那句话的两半——打九折剩 90,打七五折剩 75,打对折剩 50,打二五折剩 25。最后两行是值得停一下的,那里两种说法离得最远:减掉 75% 与按原价 25% 卖,说的是同一个货架。这张表不挂币种、不含税,末列是原价减去中列相减得到的,不是拿剩下的成数乘出来的,与面板用的是同一个约定。
公式
砍掉的钱 = 原价 × 折扣率 ÷ 100 | 实付 = 原价 − 砍掉的钱
- listPrice
- 还没有打折扣的那个价格。面板上两个金额都由它推出来,所以原价填 0 会被拒绝:那会得到一块全是零的面板而不是一个答案
- percentOff
- 折扣率,按原价的百分比算。只有一个率,不是两个:这一页算的是单段减免合起来是多少,在原价上再叠一段是另一页的事
- savings
- 这一刀砍掉的钱。它是本页的主结果,也是先落地到分的那个数,后面的实付是拿它相减得到的
- finalPrice
- 折扣打完你还得付的钱。它是原价减去省下的钱,而不是原价乘上剩下的那个成数
- percentPaid
- 你还付着原价的几成。它是你填进去那个折扣率的补数——打七折就是付七成——而不是从两个金额反推出来的数
当一笔价格上只有一段减免、你想知道它值多少钱时用它:只给折扣率不给价的促销标签、按百分比写的优惠券、把两种说法的报价放在一起比。两段减免叠在一起时请用叠加的那一页,因为一个折扣率表达不了两个,而把两段填进这一页会低估实际的减免。
算例
默认算例:80 元打七折
- 砍掉的钱:80 × 30 ÷ 100 = 24.00
- 实付:80.00 − 24.00 = 56.00
- 实付占比:100 − 30 = 70.00%
八十打七折是读整页最省事的一组数,因为这句话的两半都是整数:砍掉 24.00,剩下 56.00,实付占比写 70%。最后那一行与两个金额一样是这一页的用意:写着「打七折」的标签与写着「按原价七成卖」的标签是同一个价,面板让你一眼看见这件事。
带分的原价:129.99 元打八五折
- 砍掉的钱:129.99 × 15 ÷ 100 = 19.4985,舍到两位 = 19.50
- 实付:129.99 − 19.50 = 110.49
- 实付占比:100 − 15 = 85.00%
这一条的实付是做减法而不是做乘法得到的,而这一组数正好是两种做法都看得出来的那一种。直接算剩下的价是 129.99 × 0.85 = 110.4915,也舍到 110.49,两种做法在这里一致;本页仍然用减法,因为两个金额必须在屏幕上对得起来,而这两种约定里只有一种每次都保证这一点。
浅折扣配小价钱:40 元打九五折
- 砍掉的钱:40 × 5 ÷ 100 = 2.00
- 实付:40.00 − 2.00 = 38.00
- 实付占比:100 − 5 = 95.00%
折扣越浅,补数那一行越有用:打九五折这个说法,多数人要停一下才能翻成「还要付九成五」。算术在折扣浅的这一头没有任何变化,变的是面板现在说的这句话是价签上没有写的。
舍入次序看得见的那一组数:5 分钱打对折
- 砍掉的钱:0.05 × 50 ÷ 100 = 0.025,舍到两位 = 0.03
- 实付:0.05 − 0.03 = 0.02
- 实付占比:100 − 50 = 50.00%
五分钱的一半是两分半,这个半必须落到某一边,进位到三之后就分不匀了。直接算实付也会得到 0.025,同样舍成 0.03——那会印出一件 0.05 元的东西「砍掉 0.03、还要付 0.03」,加法不闭合。本页先把省下的钱定下来,两行才加得回去,代价是这一刀的折扣看起来比一半略深。
字段允许的最小原价,打对折
- 砍掉的钱:0.01 × 50 ÷ 100 = 0.005,舍到两位 = 0.01
- 实付:0.01 − 0.01 = 0.00
- 实付占比:100 − 50 = 50.00%
一分钱打对折等于不要钱,因为半分钱不是一个价格,进位就把整数带走了。这一条也是「实付占比为什么用补数」最清楚的地方:若从两个金额反推,会得到「打对折」旁边写着「你还付 0%」,那样的面板看起来像坏了。补数回答的是这一行的那个问题——这个折扣叫什么——而不是这一分钱最后落成了几。
局限
有两个约定值得在看数之前先知道。第一个是两个金额的舍入次序:砍掉的钱先落地到分,实付是拿原价减去这个数得到的,而不是拿折扣后剩下的成数直接乘出来。这么定的好处是两个数在屏幕上自己解释得通——砍掉的加实付精确等于原价,用印出来的数一加就对上。代价落在价钱的低端:五分钱打对折,本页给的是砍掉 0.03、还要付 0.02,而直接算实付同样会得到 0.03,那会印出一件 0.05 元的东西砍掉 0.03 之后还要付 0.03。本页取的是加法闭合的那一种。这一分在中国法下不是问题:《明码标价和禁止价格欺诈规定》第二十一条第(三)项明确写着,成交结算后实际折价、减价幅度与标示幅度不完全一致、但符合舍零取整等交易习惯的,不属于价格欺诈(原文在下方参考来源里)。第二个约定是价格不能低于它的最小单位,所以在最小的那个价上,这一页能表达的最深折扣就是把整个价带走:一分钱打对折实付 0.00,而实付占比那一行仍然写 50%,因为它答的是这个折扣叫什么。实付占比是另一种行:它是你填进去那个折扣率的补数,不是从两个金额反推的,所以舍入动了分位之后它仍然与输入一致——反推会在一分钱的商品上印出「打对折、你还付 0%」。本页也不判这个折扣真不真、划不划算。原价是你填进来的数,本页没有第二个来源可以核对它,所以它能告诉你「从这个原价砍下去是多少」,不能告诉你「这个原价有没有真的被标过」。这件事在中国法下的口径是《明码标价和禁止价格欺诈规定》第十九条第(三)项:通过虚假折价、减价或者价格比较等方式销售商品或者提供服务,属于价格欺诈行为;第十七条另外规定,没有合理理由不得在折价、减价前临时显著提高标示价格并作为计算基准。这两条管的是商家能怎么标价,不是算术,本页也不拿它们去核对任何一格输入。这里的数都是税前(不含税)的数,不挂任何币种,因为哪种货币下算术都一模一样;也不建模任何税费——如果之后要加销售税,它是加在折扣之后剩下的那个价上而不是加在原价上,那是另一页的事。最后,本页只有一段折扣。在原价上再叠一段不是同一个数,因为第二段作用在第一段剩下的价上而不是原价上,只填第一段会低估、把两个率相加填进来会高估;要算叠加的那一种请看隔壁那一页。
常见问题
- 打七折与付原价的七成,是同一件事吗?
- 是,而本页把两种说法都印出来,就是为了让你不用自己做这个换算。一个 30% 的减免留下的是原价的 70%,所以按哪种说法写的价签描述的都是同一个价:原价 80 元的话,砍掉 24.00、还要付 56.00。商家在两种说法之间挑,挑的是效果——减免大的写成折扣率更好听,减免小的写成实付占比更好听——而面板替你把这句话翻了,不把它留成一道心算题。
- 为什么省下的钱要先舍入,实付再用相减得到?
- 为了让两行加起来对得上。砍掉的钱先落地到分,实付是原价减去这个数,于是这两个数在屏幕上永远闭合:砍掉的加实付,用印出来的数一加精确等于原价。直接算实付在算术上等价,差的是舍入的对象不同,可能差一分:五分钱打对折时那样算会印出砍掉 0.03、还要付 0.03,加起来比原价多。
- 为什么价钱很小的时候,实付占比与两个金额对不上?
- 因为它是你填进去那个折扣率的补数,不是从金额推出来的。打七折永远等于付七成,这一行写的就是这句话,舍入把分位动了它也不变。若改成从两个金额反推,价钱小的那一头就会崩:一分钱打对折时实付舍成 0.00,反推会印出「打对折」旁边写着「你还付 0%」。这一行回答的是这个折扣叫什么,不是这一分钱最后落成了几。
- 为什么一分钱打对折就不要钱了?
- 因为半分钱不是一个价格,只能进位到某一个值上。一分钱打对折是半分钱,进位回去还是一分钱,也就是把整个价带走,于是实付是 0.00。本页印不出比最小单位更低的价,所以在最小的那个价上,它能表达的最深折扣就是全免。这与上面让两行闭合的是同一个下限,不是算错了。
- 这一页会算销售税吗?
- 不会,实付那一行不是最终的付款金额。销售税是按折扣之后剩下的价计征的,不是按原价计征,所以打折买东西时税基是那个更小的数,税要在这一页算完之后另外算,而不是在这之前。这里的数都是税前(不含税)的数,不挂任何币种,运费、手续费之类在收银台才加上去的东西也不建模。要知道最后从账户里划走多少,请把这一页的实付那一行拿去做税费计算。
- 这一页能填两个折扣吗?
- 不能,只有一个折扣率是设计如此,不是漏了。前后两段减免不等于一段,因为第二段是落在第一段剩下的价上而不是落在原价上,所以只填第一段会低估实际减免,把两个率相加填进来会高估。要算那一种,隔壁有一页专门处理,并且会把每一段走完之后的价单独印出来,两段合起来与两个率相加差在哪里一眼就能看见。
参考资料
- 《明码标价和禁止价格欺诈规定》(市场监管总局令第 56 号,2022 年 7 月 1 日起施行)第十九条第(三)项——通过虚假折价、减价或者价格比较等方式销售商品或者提供服务,属于价格欺诈行为;这一条管的是「这个折扣是不是真的」,本页不拿它核对输入 — 国家市场监督管理总局(中国)
- 《明码标价和禁止价格欺诈规定》第二十一条第(三)项——成交结算后,实际折价、减价幅度与标示幅度不完全一致,但符合舍零取整等交易习惯的,不属于第十九条规定的价格欺诈行为;本页「砍掉的钱先落地到分、实付再相减」那条约定在中文语境里对应的正是这一条 — 国家市场监督管理总局(中国)
- 16 CFR §233.5 — Miscellaneous price comparisons:除常见形式之外的各类优惠宣传,受同样的总原则约束,广告主应当确保优惠本身是真实可信的。原条目名保留英文,本页引的是它对「折扣宣传的其它变体」这一问的判词 — 康奈尔大学法学院法律信息研究所(Legal Information Institute,美国)