首页 > 解决方案 > PHP:防止 json_encode 将 float 转换为 int

问题描述

我需要以小数形式将金额(如 50.00)传递给 API,但是当金额为 json_encoded 时,它会将金额转换为 int 50。

示例代码:

echo json_encode(['amount' => 50.00]);

这显示

{“金额”:50}

我需要将金额保持为 50.00 本身。我该怎么做呢?

标签: phpjson

解决方案


您可以尝试使用JSON_PRESERVE_ZERO_FRACTION标志来确保浮点值始终被编码为浮点值。请注意,此选项从 PHP 5.6.6 开始可用。

<?php
echo json_encode(['amount' => 50.00], JSON_PRESERVE_ZERO_FRACTION);
?>

请注意,虽然JSON_PRESERVE_ZERO_FRACTION是一个选项,但结果(如评论中提到的@NigelRen)是50.0, not 50.00


推荐阅读