技术博客
换算精度与浮点结果怎么处理?result 与 result_str 的区别

换算精度与浮点结果怎么处理?result 与 result_str 的区别

作者: 万维易源
2026-09-03
精度浮点resultresult_str
# 换算精度与浮点结果怎么处理?result 与 result_str 的区别 > 接口/接入点:免费单位换算 1690-1(单位换算)|是否免费:是|请求方式:POST/GET|返回格式:JSON|适用人群:中高级开发者、前端|阅读时间:约 6 分钟 ## 核心要点 - 返回里 `result` 是**数值**结果、`result_str` 是**字符串**结果,两者语义一致、类型不同。 - 展示给用户用 `result_str`(如 `"0.01"`),继续做数值计算用 `Number(result)`。 - 文档把 `result` 标为 String,但**实测返回 Number**(如 `0.01`),代码要兼容两种类型。 ## Why:类型没处理好,前端就会出 bug 把 `result` 当字符串拼到 UI 上可能显示正常,但一旦参与 `0.01 + 0.02` 之类计算,浮点误差就来了;反之把 `result_str` 直接 `parseFloat` 也可能踩格式。搞清楚二者分工,展示和计算都稳。 ## What:两个结果字段 | 字段 | 类型(实测) | 用途 | |------|------|------| | `result` | 数值(如 `0.01`;文档标注 String) | 数值计算 | | `result_str` | 字符串(如 `"0.01"`) | 直接展示 | ## How:正确使用 ```python import requests r = requests.post( "https://route.showapi.com/1690-1", params={"appKey": "YOUR_APPKEY"}, data={"num": "1", "from": "cm", "to": "m", "type": "longness"}, timeout=10, ) body = r.json()["showapi_res_body"] it = body["result_list"][0] display = f"{it['result_str']} {it['unit']}" # 展示:"0.01 米" value = float(it["result"]) # 计算:兼容数值/字符串两种返回 total = value * 100 # 1cm * 100 = 1.0 m ``` ```javascript const it = body.result_list[0]; const display = `${it.result_str} ${it.unit}`; // 展示 const value = Number(it.result); // 计算,兼容两种类型 ``` ## 进阶 / 边界 - **浮点误差**:`0.1 + 0.2 !== 0.3` 是 JS/Python 浮点通病。涉及金额/关键计量时,对 `value` 做 `round(x, n)` 或用整数分位计算再除。 - **`result` 类型不稳定**:实测为 Number,文档写 String。统一用 `Number(it.result)` 转换后再计算,避免后端某天改返回格式导致拼接出错。 - **保留小数位**:展示位数以 `result_str` 为准,不要自己 `toFixed` 二次处理,除非业务需固定精度(那时对 `value` 用 `toFixed` 并注明)。 ## FAQ **Q1:展示用哪个字段?** A:用 `result_str` + `unit`,直接拼给用户,不用再处理。 **Q2:计算用哪个?** A:用 `Number(result)`,并对浮点结果按需 `round`/`toFixed`。 **Q3:为什么文档说 result 是 String 但我拿到 Number?** A:接口实测返回数值;文档标注可能有滞后。代码用 `Number()` 兼容最稳,不要假设固定类型。 **Q4:小数位数太多怎么处理?** A:展示用 `result_str`(接口已给合适位数);若业务要固定位数,对 `value` 用 `toFixed(n)` 并说明口径。 ## 相关能力 / 下一步阅读 - [单位换算器返回字段全解:ret_code 与 result_list 一文读懂](https://www.showapi.com/guides/unit-convert-response-codes-1690) - [科研/工程场景如何集成单位换算器?以长度、面积批量换算为例](https://www.showapi.com/guides/unit-convert-engineering-integration-1690) - [免费接口如何不超档位?调用次数与配额管理建议](https://www.showapi.com/guides/unit-convert-free-quota-1690) - **本系列共 12 篇**:查看[单位换算器(免费单位换算)指南总目录](https://www.showapi.com/guides/unit-convert-guides-1690)