You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中能否反向推导原值:数字加其向上取整到百位的百分比之和

反向推导基准价格的实现方案

推导逻辑

首先拆解正向计算的公式:
设最终价格为P,原始基准价格为N,百分比为r,C为N向上取整到最近百位的整百值,满足:

C - 99 ≤ N ≤ C(C为100的正整数倍)
正向计算的公式为:
P = N + C * r
将公式变形得到N = P - C * r,代入上述不等式解出C的取值范围:

  1. 代入左边界:C - 99 ≤ P - C * r → C * (1 + r) ≤ P + 99 → C ≤ (P + 99) / (1 + r)
  2. 代入右边界:P - C * r ≤ C → P ≤ C * (1 + r) → C ≥ P / (1 + r)
    由于取值区间长度为99/(1 + r),r为正数时区间长度必然小于100,因此区间内有且仅有一个100的整数倍,就是我们要找的C。

代码实现

const getBasePrice = (price, percentage) => {
  const rate = 1 + percentage
  const lowerBound = price / rate
  // 找到区间内唯一的整百值C
  const C = Math.ceil(lowerBound / 100) * 100
  // toFixed处理浮点数精度问题,转数值返回
  return +(price - C * percentage).toFixed(2)
}

测试验证

getBasePrice(1030, 0.03) // 1000
getBasePrice(33214, 0.03) // 32245
getBasePrice(53709.23, 0.03) // 52143.23

完全匹配给定测试用例。

内容的提问来源于stack exchange,提问作者Tom Parke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 02:27:02