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))
如果这是钱,最好首先使用便士作为表示形式,以避免在小数转换和小数转换时出现问题。
我在浮点值转换方面遇到问题。我在 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))
如果这是钱,最好首先使用便士作为表示形式,以避免在小数转换和小数转换时出现问题。