JSON格式化后订单号末位变了?KKCE实拍长整数精度边界
JSON里的长编号如果被解析成JavaScript数值,可能超过可精确表示的整数上限,导致末位改变。排版工具给出语法通过提示,只能说明语法可读,不能证明每一位数字原样保留。订单号、流水号等标识应提前约定传输类型。
2026年11月7日,www.kkce.com 官网实操截图。输入是专门构造的长编号,不对应真实订单;两种类型的输出差异来自本次官网操作。
两个相同编号采用不同类型
在快快测结构排版工具同时放入数值9007199254740993与同内容字符串。此次实际格式化后,数值显示为9007199254740992,字符串仍保留末位3。截图直接对照输入输出,展示当前浏览器数值表示的限制,而非将业务数据错误归给缩进。
安全整数不是位数越多越好猜
JavaScript常见Number表示可精确覆盖的整数边界是2的53次方减一。越界后并非所有整数都能区分,不能用“看起来还能显示”判断精度。这类数据的语法规范没有要求所有解析器都采用同一种内部数值实现。
标识字段通常无需参与算术
若编号只用于相等判断、拼接或查询,字符串契约更容易保留完整字面值。已有接口变更时,需同步消费端、数据库映射及导出流程;不要只在最后展示时加引号,因为丢失的原数字无法由转换自动补回。
核对必须从最初报文开始
保存收到的报文原件,接着比解析值、落库值和页面值,定位首次变化位置。KKCE可快速构建长编号对照样本;金额等确需计算的数据则应采用明确的精确表示策略,并在真实服务链路做边界验收。