科学计算器已知问题与使用避坑:subtraction / percentage 暂不可用、sqrt 单参数退化
# 科学计算器已知问题与使用避坑:subtraction / percentage 暂不可用、sqrt 单参数退化
> 接口 免费科学计算器(apiCode 1699)· 接入点 科学计算器(1699-1)· 免费 · POST/GET · 返回 JSON · 适合 已接入 / 准备接入的开发者 · 阅读约 5 分钟
## 核心要点
- ⚠️ **`subtraction`(减)与 `percentage`(百分比)实测均返回「方法调用出错」(ret -1),暂不可用**——但仍在官方操作名清单里,别踩坑。
- ⚠️ **`sqrt` 单参数会退化返回原值**(如 `sqrt(9)=9`),必须传 2 个参数 `sqrt(被开方数,根次数)`。
- ⚠️ **官方文档的返回示例是占位符**(把 `arccos(1)` 写成 124354),真实值为 `0`;以本文实测为准。
- 浮点结果带尾差(如 `sin(30°,ang)=0.49999…`),展示前按需四舍五入。
## Why:这篇为什么值得先读
以上几个点,官方文档要么没写、要么写错。如果不提前知道,你会花时间怀疑「是不是我调错了」,甚至给客服提无效工单。把这些坑集中在这里,能帮你省下大量排查时间。本篇所有结论均来自**真实 API 调用实测**(2026-09-03,账户 AppKey),不是猜测。
## What:接口速览
| 项目 | 说明 |
|------|------|
| 请求地址 | `https://route.showapi.com/1699-1?appKey={your_appKey}` |
| 计费 | 免费,[使用档次限制](https://www.showapi.com/free-api) |
| 本文结论来源 | 全部经真实请求实测验证 |
## How:三个实测确认的坑
### 坑 1:`subtraction` / `percentage` 暂不可用
实测(多种参数格式)均返回 `ret_code: -1, remark: "方法调用出错"`:
```bash
# subtraction 即使参数正确也报错
curl -s -X POST "https://route.showapi.com/1699-1?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "num=10,2&operation=subtraction&rad_or_ang="
# -> ret_code: -1, remark: "方法调用出错", result: null
# percentage 同样报错
curl -s -X POST "https://route.showapi.com/1699-1?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "num=50,10&operation=percentage&rad_or_ang="
# -> ret_code: -1, remark: "方法调用出错"
```
**替代方案(未实测,供参考)**:
- 减法:用 `add` 传负数,如 `num=10,-2&operation=add`;或 `product` 乘 `-1` 后相加。
- 百分比:自行用乘法/`product` 计算(如「200 的 10%」= `product(200,0.1)`)。
> 以上替代写法建议你本地实测确认后再用于生产。
### 坑 2:`sqrt` 单参数退化
`sqrt(9)` 单参数返回 `9.0`(原值),**不是 3**。正确写法传 2 个参数:
```python
import requests
APP_KEY = "YOUR_APPKEY"
def calc(num, op):
r = requests.post("https://route.showapi.com/1699-1",
params={"appKey": APP_KEY},
data={"num": num, "operation": op, "rad_or_ang": ""}, timeout=10)
b = r.json()["showapi_res_body"]
return b["result"] if str(b.get("ret_code")) == "0" else f"失败:{b.get('remark')}"
print(calc("9", "sqrt")) # 9.0 ⚠️ 退化,非 3
print(calc("9,2", "sqrt")) # 3.0 ✅ 平方根 √9
```
### 坑 3:官方文档返回示例是占位符
官方页把 `arccos(1)` 的返回示例写成 `result: 124354`,但真实调用:
```bash
curl -s -X POST "https://route.showapi.com/1699-1?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "num=1&operation=arccos&rad_or_ang=rad"
# -> result: 0.0 (真实值,arccos(1)=0)
```
请以本系列各篇的**实测返回值**为准,不要照搬文档示例。
## 返回示例与解析
| 调用 | 真实结果 | 备注 |
|------|---------|------|
| `subtraction(10,2)` | `ret -1` 方法调用出错 | 暂不可用 |
| `percentage(50,10)` | `ret -1` 方法调用出错 | 暂不可用 |
| `sqrt(9)` | `9.0` | ⚠️ 退化 |
| `sqrt(9,2)` | `3.0` | ✅ 正确 |
| `arccos(1,rad)` | `0.0` | 文档示例 124354 为占位符 |
## 进阶 / 边界
- **浮点尾差**:三角函数等结果带尾差(如 `0.49999999999999994`),展示时 `toFixed` 处理。
- **操作名大小写**:必须全小写(如 `arccos`),否则报「operation不能为空或者不正确」。
- **错误排查**:失败时一定先看 `remark` 文案,对照[错误码排查](https://www.showapi.com/guides/calculator-error-codes-1699)。
## FAQ
**Q1:减法真的不能用吗?**
实测 `subtraction` 各种写法都返回「方法调用出错」,目前不可用。建议用 `add` 传负数替代,并自行实测确认。
**Q2:百分比怎么算?**
`percentage` 暂不可用,自行用 `product`(如 200 的 10% = `product(200,0.1)`)实现。
**Q3:为什么 `sqrt(9)` 返回 9?**
单参数退化行为,必须传 2 个参数(被开方数,根次数)。这是文档未说明的坑。
**Q4:文档示例能信吗?**
返回示例是占位符,不能信。本系列各篇均使用真实实测值。
**Q5:这些坑后续会修吗?**
以官方更新为准;遇到异常欢迎在[接口页](https://www.showapi.com/apiGateway/view/1699)反馈。
## 相关能力 / 下一步阅读
- [科学计算器操作名速查](https://www.showapi.com/guides/calculator-operations-reference-1699) —— 32 个操作名及可用状态
- [科学计算器幂与根用法](https://www.showapi.com/guides/calculator-power-root-1699) —— `sqrt` 正确写法
- [科学计算器错误码排查](https://www.showapi.com/guides/calculator-error-codes-1699) —— 失败文案对照
- **本系列共 11 篇**:查看[科学计算器开发指南总目录](https://www.showapi.com/guides/calculator-guides-1699)