Symfony\Component\HttpFoundation\JsonResponse
似乎有一个奇怪的反应。
我从对象列表中检索一个Doctrine“decimal”参数,然后尝试使用JsonResponse
发送它们的数组。但是十进制值不是我预期的那个,“精度”真的很奇怪,我无法绕过它:
我的实体:
...
/**
* @var float Local average Grade
* @ORM\Column(type="decimal", nullable=true, precision=4, scale=2)
*/
private $grade;
...
对于此示例,我将仅使用我的数据的单个结果。
当我从数据库中读取它时,我可以按预期阅读:8.30
以下是我所做的测试:
var_dump(gettype($local->getGrade()));
var_dump($local->getGrade());
var_dump((float) $local->getGrade());
var_dump(round($local->getGrade(), 2));
return new JsonResponse([
'grade' => $local->getGrade(),
'roundedGrade' => round($local->getGrade(), 2)
]);
结果如下:
string(6) "string"
string(4) "8.10"
float(8.1)
float(8.1)
{
"grade":8.0999999999999996447286321199499070644378662109375,
"roundedGrade":8.0999999999999996447286321199499070644378662109375
}
对我来说没有意义。有没有人知道这里发生了什么?
谢谢。
答案 0 :(得分:1)
试试这个:
echo number_format((float)$local->getGrade(), 2, '.', ''); //8.10