【发布时间】:2015-06-09 07:50:43
【问题描述】:
json_encode 有一个大问题,它会自动将数字四舍五入,但我需要在每个数字上保留 2 个小数点。
PHP:
<?php
$numbers = [1.00,2.00];
foreach ($numbers as $i => $number)
{
$numbers[$i] = number_format($number, 2, '.', null);
}
echo json_encode($numbers, JSON_NUMERIC_CHECK);
?>
输出: [1,2]
预期输出: [1.00,2.00]
如何防止每个数字不自动四舍五入?
PS:不是字符串:)
【问题讨论】:
-
去掉
JSON_NUMERIC_CHECK参数即可。它会将您的格式化数字编码为字符串。 -
整数只是一个数字。它没有特定的小数位数。您正在将整数格式化为可以具有您选择的任何布局的字符串,然后再次将生成的字符串专门编码为数字。你得到你要求的代码。如果您需要特定格式,请将数字作为格式化字符串传递
-
@sa.lva.ge 不,我不能,因为你在做的是反常的。您想要一个数字,您的值是 1。那 是 数值,它与 1.00 相同。如果您希望以特定格式显示该值,则需要一个字符串。
-
在 JSON 中使用带有额外零小数的数字绝对没有意义。您将无法在 JavaScript 中阅读它们。因此,如果您将它们保留为数字,它们在那里只是自重。如果您希望 JSON 继承数字格式,请使用字符串。
-
“我需要 2 个小数点”-> 不,你不需要。认真思考为什么你认为你需要它。
标签: php json decimalformat