You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 8中json_encode如何输出保留两位小数(含.00)的浮点值

实现方案说明

JSON 规范本身没有「数字保留固定小数位」的定义,整数和浮点数同属数字类型,因此json_encode默认会将小数部分为0的浮点数转为整数格式输出,属于正常逻辑。如果需要强制输出两位小数后缀,可根据需求选择以下方案:

方案1:兼容JSON数字类型,保留至少1位小数(PHP 5.6.6+ 支持)

使用JSON_PRESERVE_ZERO_FRACTION参数强制保留浮点数的小数部分,适合接受1位小数后缀、需要JSON解析后为数字类型的场景:

echo json_encode(["testVal" => 54932.00], JSON_PRESERVE_ZERO_FRACTION);
// 输出结果:{"testVal":54932.0}

方案2:严格输出两位小数后缀,解析后仍为数字类型

如果必须要.00格式的输出,可以先将数值格式化为两位小数的字符串,编码后通过正则移除对应字段的字符串引号即可:

// 格式化为两位小数的字符串,注意千位分隔符要设为空
$testVal = number_format(54932.00, 2, '.', '');
$json = json_encode(["testVal" => $testVal]);
// 替换掉目标字段的引号,转为数字格式
$json = preg_replace('/"testVal":"(\d+\.\d{2})"/', '"testVal":$1', $json);
echo $json;
// 输出结果:{"testVal":54932.00}

方案3:兼容性最高,输出字符串类型的两位小数

如果允许字段为字符串类型,直接格式化后编码即可,无需额外处理,前端可自行转换为数字使用:

echo json_encode(["testVal" => number_format(54932.00, 2, '.', '')]);
// 输出结果:{"testVal":"54932.00"}

内容的提问来源于stack exchange,提问作者Jadasdas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:06:03