实用教程
用 Claude Opus 5.5 解析本地化商品数字,避免猜错数值
让 Claude Opus 5.5 修复导入的商品数字前,先明确输入地区和允许的格式。同一个字符串 1,234,按不同约定可能表示一千二百三十四,也可能表示小数。结果看起来合理,并不代表原值没有被改坏。


让 Claude Opus 5.5 修复导入的商品数字前,先明确输入地区和允许的格式。同一个字符串 1,234,按不同约定可能表示一千二百三十四,也可能表示小数。结果看起来合理,并不代表原值没有被改坏。
转换前保留原始文本
2012 年 7 月的一则社区提问描述了 parseFloat 遇到千位分隔符就停止的问题。MDN 的 parseFloat 文档说明,它读取的是最长合法前缀,并不是按地区规则验证输入。规范化之前,先保留原始单元格、来源地区和行标识。
| 原始输入 | 明确的输入约定 | 预期规范小数字符串 |
|---|---|---|
| 1,234.56 | en-US 分组与小数规则 | 1234.56 |
| 1.234,56 | de-DE 分组与小数规则 | 1234.56 |
| 1 234,56 | fr-FR,允许 U+202F 分组符 | 1234.56 |
| 1,234 | 未提供地区 | 拒绝有歧义的输入 |
| 12,34.56 | en-US,要求标准分组 | 拒绝错误分组 |
计算前先检查数量级
本地 JavaScript 样例中,parseFloat('1,234.56') 返回 1,parseFloat('1.234,56') 返回 1.234,包含 U+202F 的法语样例返回 1。这些是实际解析结果,不是 Opus 输出。约定明确时,en-US 的 1,234 表示 1234,de-DE 的 1,234 表示 1.234,两者相差 1000 倍。把所有逗号和句点都删除,会把 1.234,56 变成 123456,而不是 1234.56。
Intl.NumberFormat.formatToParts可以返回格式化结果的各个部分,但不是通用反向解析器。应明确允许的数字字符、分组、小数分隔符、正负号与精度,并决定货币符号、科学计数法和两端空格是否可接受。不支持的输入应拒绝,不能猜测。保留规范小数字符串,直到后续精确小数计算步骤;格式化预览好看,不等于解析正确。
针对导入边界的提示词
审查这些带行标识和明确地区的原始商品数字。不要只凭一个标点推断地区。保留全部原始字符串,另行输出规范小数字符串或明确拒绝原因。
写代码前列出允许的数字字符、分组模式、小数分隔符、正负号语法、空白规则和最大小数位数。除非约定明确允许,否则货币另设字段。拒绝缺少地区产生的歧义、错误分组,以及不支持的符号或科学计数法。
返回小型解析器或合适的现有解析器,说明支持范围,并为全部输入提供测试。包含 en-US 的 1,234.56、de-DE 的 1.234,56、fr-FR 的 U+202F 分组,以及表中的两种拒绝情况。任何舍入前先核对数量级。不要覆盖原始输入或修改商品价格。未执行的集成测试标为待验证。
模型用法参考官方 Opus 提示指南。本文提出的导入修复并未通过 Opus 执行,也未作用于生产商品目录。
验收规范化结果
检查同时包含原文、地区、规范字符串和拒绝原因的清单。验证可接受样例和故意构造的错误样例,再用规定的显示格式器输出已接受数值进行复核。格式化是辅助检查,是否接受仍取决于输入语法。在更新商品目录前,测试实际表格导出文件及接收端导入器。
**能删掉所有空格吗?** 只能删除约定允许的分隔符或边缘空白,否则错误值可能变得貌似正确。**解析时就舍入吗?** 解析与计算政策应分开;后一步请看折扣舍入指南。
商品信息确认后,可在 Panelly Studio 制作广告图。这里没有声称 Panelly 与 Opus 已集成,也没有自动修正商品目录。


