php - PHP 中的 floating point value 有问题

我遇到了 floating point value 转换问题。我在一个 value 为 317.46 的类中有一个私有属性。如果我将此 value 乘以 100,我应该得到 317.46 的 value,这似乎正在发生,但是当我使用 json_encode 时,它返回另一个 value,略小一些。这是调试控制台的结果:

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

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

回答1

使用 round() 从 floating point 表示中删除舍入误差。

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

如果这是钱,最好首先使用便士作为表示,以避免与小数之间的转换问题。

相似文章

r - for loop 表示找不到对象

我有一个名为trainset的数据集,我正在尝试使用forloop遍历特定列并将values相加,重复数据集中的所有行。我首先定义了一个函数来通过计算总分来返回预测:point=0m.gwtg=fun...

最新文章