PHP 中的浮点值问题

Problem with a floating point value in PHP

我在浮点值转换方面遇到问题。我在 class 中有一个私有的 属性,值为 317.46。如果我将这个值乘以 100,我应该得到 317.46 的值,这似乎是正在发生的事情,但是当我使用 json_encode 它 returns 另一个值,稍微小一点。这是调试控制台的结果:

$this->valor
317.46
$this->valor * 100
31746
json_encode($this->valor * 100)
"31745.99999999999996"

我知道这是由于浮点数的存储方式,但在这种情况下我需要它是 'rendered' 作为整数,否则它会在 API 中产生错误我打电话。在其他语言中,我会将其转换为 int 值,或使用 decimal 数据类型,例如 c#,但据我所知,它在 PHP 中不可用。

使用 round() 从浮点表示中删除 round-off 错误。

echo json_encode(round($this->valor * 100))

如果这是钱,最好首先使用便士作为表示形式,以避免在小数转换和小数转换时出现问题。