跳到主要内容
CalcMax

百分比折扣计算器

范围:0.01 – 1,000,000,000

范围:0 – 100

结果

24.00

省下

实付
56.00
实付占原价
70.00%

打一个折扣只有一步乘法,所以这个计算器值得做的地方不是算法,而是把那句话里藏着的两个数都摆出来。打七折说的是砍掉三成,同时说的也是还要付七成,商家用哪一半取决于哪一半听起来更好。这一页把三个数一起给你:这一刀砍掉了多少钱、剩下要付多少、以及你还付着原价的几成,于是用其中一种说法报出来的价,不用心算就能读成另一种说法。

原价 100 时几种常见折扣率各是多少

折扣率砍掉的钱实付
101090
252575
505050
757525

每一行都把原价锁在 100,这是这张表一眼能读的原因:第一列同时也是砍掉的钱,因为一百的百分之几就是那个几本身。表是沿折扣率铺开的,横着读一行得到的就是这一页讲的那句话的两半——打九折剩 90,打七五折剩 75,打对折剩 50,打二五折剩 25。最后两行是值得停一下的,那里两种说法离得最远:减掉 75% 与按原价 25% 卖,说的是同一个货架。这张表不挂币种、不含税,末列是原价减去中列相减得到的,不是拿剩下的成数乘出来的,与面板用的是同一个约定。

公式

砍掉的钱 = 原价 × 折扣率 ÷ 100 | 实付 = 原价 − 砍掉的钱

listPrice
还没有打折扣的那个价格。面板上两个金额都由它推出来,所以原价填 0 会被拒绝:那会得到一块全是零的面板而不是一个答案
percentOff
折扣率,按原价的百分比算。只有一个率,不是两个:这一页算的是单段减免合起来是多少,在原价上再叠一段是另一页的事
savings
这一刀砍掉的钱。它是本页的主结果,也是先落地到分的那个数,后面的实付是拿它相减得到的
finalPrice
折扣打完你还得付的钱。它是原价减去省下的钱,而不是原价乘上剩下的那个成数
percentPaid
你还付着原价的几成。它是你填进去那个折扣率的补数——打七折就是付七成——而不是从两个金额反推出来的数

当一笔价格上只有一段减免、你想知道它值多少钱时用它:只给折扣率不给价的促销标签、按百分比写的优惠券、把两种说法的报价放在一起比。两段减免叠在一起时请用叠加的那一页,因为一个折扣率表达不了两个,而把两段填进这一页会低估实际的减免。

算例

  1. 默认算例:80 元打七折

    1. 砍掉的钱:80 × 30 ÷ 100 = 24.00
    2. 实付:80.00 − 24.00 = 56.00
    3. 实付占比:100 − 30 = 70.00%

    八十打七折是读整页最省事的一组数,因为这句话的两半都是整数:砍掉 24.00,剩下 56.00,实付占比写 70%。最后那一行与两个金额一样是这一页的用意:写着「打七折」的标签与写着「按原价七成卖」的标签是同一个价,面板让你一眼看见这件事。

  2. 带分的原价:129.99 元打八五折

    1. 砍掉的钱:129.99 × 15 ÷ 100 = 19.4985,舍到两位 = 19.50
    2. 实付:129.99 − 19.50 = 110.49
    3. 实付占比:100 − 15 = 85.00%

    这一条的实付是做减法而不是做乘法得到的,而这一组数正好是两种做法都看得出来的那一种。直接算剩下的价是 129.99 × 0.85 = 110.4915,也舍到 110.49,两种做法在这里一致;本页仍然用减法,因为两个金额必须在屏幕上对得起来,而这两种约定里只有一种每次都保证这一点。

  3. 浅折扣配小价钱:40 元打九五折

    1. 砍掉的钱:40 × 5 ÷ 100 = 2.00
    2. 实付:40.00 − 2.00 = 38.00
    3. 实付占比:100 − 5 = 95.00%

    折扣越浅,补数那一行越有用:打九五折这个说法,多数人要停一下才能翻成「还要付九成五」。算术在折扣浅的这一头没有任何变化,变的是面板现在说的这句话是价签上没有写的。

  4. 舍入次序看得见的那一组数:5 分钱打对折

    1. 砍掉的钱:0.05 × 50 ÷ 100 = 0.025,舍到两位 = 0.03
    2. 实付:0.05 − 0.03 = 0.02
    3. 实付占比:100 − 50 = 50.00%

    五分钱的一半是两分半,这个半必须落到某一边,进位到三之后就分不匀了。直接算实付也会得到 0.025,同样舍成 0.03——那会印出一件 0.05 元的东西「砍掉 0.03、还要付 0.03」,加法不闭合。本页先把省下的钱定下来,两行才加得回去,代价是这一刀的折扣看起来比一半略深。

  5. 字段允许的最小原价,打对折

    1. 砍掉的钱:0.01 × 50 ÷ 100 = 0.005,舍到两位 = 0.01
    2. 实付:0.01 − 0.01 = 0.00
    3. 实付占比: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。本页印不出比最小单位更低的价,所以在最小的那个价上,它能表达的最深折扣就是全免。这与上面让两行闭合的是同一个下限,不是算错了。
这一页会算销售税吗?
不会,实付那一行不是最终的付款金额。销售税是按折扣之后剩下的价计征的,不是按原价计征,所以打折买东西时税基是那个更小的数,税要在这一页算完之后另外算,而不是在这之前。这里的数都是税前(不含税)的数,不挂任何币种,运费、手续费之类在收银台才加上去的东西也不建模。要知道最后从账户里划走多少,请把这一页的实付那一行拿去做税费计算。
这一页能填两个折扣吗?
不能,只有一个折扣率是设计如此,不是漏了。前后两段减免不等于一段,因为第二段是落在第一段剩下的价上而不是落在原价上,所以只填第一段会低估实际减免,把两个率相加填进来会高估。要算那一种,隔壁有一页专门处理,并且会把每一段走完之后的价单独印出来,两段合起来与两个率相加差在哪里一眼就能看见。

参考资料

相关计算器