如何为 JSON 序列化中的不同浮点字段指定独立的小数精度

在 PHP 中,json_encode() 默认会省略浮点数末尾的零,且全局 serialize_precision 无法为各字段单独设置精度;本文介绍通过 number_format() 预处理字段值,实现按需控制每位浮点数的小数位数,并说明其字符串转换本质及使用注意事项。 在 php 中,`json_encode()` 默认会省略浮点数末尾的零,且全局 `serialize_precision` 无法为各字段单独设置精度;本文介绍通过 `number_format()` 预处理字段值,实现按需控制每位浮点数的小数位数,并说明其字符串转换本质及使用注意事项。在构建 JSON API 响应时,常需对不同浮点字段施加差异化精度控制------例如地理坐标(latitude/longitude)保留 6~8 位小数以保障定位精度,而高度(height)仅需保留 2 位小数并显式展示 .00。但 PHP 的 json_encode() 本身不支持字段级精度配置,ini_set('serialize_precision', N) 仅影响全局浮点序列化行为,且自 PHP 7.1 起默认为 -1(即完整精度),仍无法满足"同个响应中多精度共存"的需求。正确做法是:在赋值前,对每个浮点字段单独调用 number_format() 进行格式化。该函数接受数值、小数位数、小数点符号和千位分隔符(后两者可省略),返回带指定精度的字符串:response-\>payload-\>latitude = number_format(rad2deg(latitude), 6, '.', ''); // 如 35.123000response-\>payload-\>longitude = number_format(rad2deg(longitude), 6, '.', ''); // 如 41.123500response-\>payload-\>height = number_format(height, 2, '.', ''); // 如 100.00执行 json_encode($response, JSON_PRETTY_PRINT) 后,将输出符合预期的 JSON: 文心快码 文心快码(Comate)是百度推出的一款AI辅助编程工具

相关推荐
这个DBA有点耶9 小时前
研发规模/投入最大的国产数据库厂商是谁?拆解五个衡量维度
数据库·程序员·产品
蚰蜒螟9 小时前
从内核启动到 Java NIO:一次 socket accept 的源码串联之旅
java·python·nio
葡萄城技术团队9 小时前
数据库里的数据明明是对的,为什么 BI 报表还是错?
数据库
野生数据人9 小时前
日志平台每日巡检我压成了一条命令链:从 SHOW BACKENDS 到扩缩容的完整步骤
大数据·数据库
bmxy小明同学10 小时前
2026-10-09-token与成本
java·前端·数据库
路远的数据库笔记10 小时前
Oracle报ORA-00020连接打满?从专用进程模型到静态参数,一次生产排查全记录
数据库·oracle·国产数据库·ora-00020·dba实战·sharedserver
高洁0110 小时前
AI赋能产业升级与中美未来经济赛道博弈
人工智能·python·深度学习·机器学习·transformer
瀚高PG实验室10 小时前
瀚高数据库序列介绍、使用及值不连续、重复写入等现象处理
数据库·postgresql·瀚高数据库
夜晚回家10 小时前
Python 原始字符串详解 | r 前缀到底让什么不再转义
开发语言·python
这个DBA有点耶10 小时前
PostgreSQL HOT更新:频繁更新表的索引膨胀根因与fillfactor调优
数据库·sql·postgresql