Php 打印来自数据库的双字段时出现Laravel问题

Php 打印来自数据库的双字段时出现Laravel问题,php,laravel,eloquent,Php,Laravel,Eloquent,我对laravel或php有一个问题(还不知道),问题是下一个: 我的数据库中有一个名为debe的字段,其值为3.97,如下所示。此字段是一个双(11,2) 当我在我的框架上访问该字段时,例如使用dd()它会正确返回值,如下所示 当我试图打印到视图中时,出现了主要问题,我收到了下一个: 我不知道为什么会发生这种情况,但目前我找到的唯一解决方案是使用PHPround()函数对值进行四舍五入 关于官方文件中的检查条款: 浮点数的精度有限。尽管这取决于 PHP系统通常使用IEEE 754双精度格

我对laravel或php有一个问题(还不知道),问题是下一个:

我的数据库中有一个名为
debe
的字段,其值为3.97,如下所示。此字段是一个
双(11,2)

当我在我的框架上访问该字段时,例如使用
dd()
它会正确返回值,如下所示

当我试图打印到视图中时,出现了主要问题,我收到了下一个:

我不知道为什么会发生这种情况,但目前我找到的唯一解决方案是使用PHP
round()
函数对值进行四舍五入

关于官方文件中的检查条款:

浮点数的精度有限。尽管这取决于 PHP系统通常使用IEEE 754双精度格式, 由于顺序的四舍五入,这将给出最大的相对误差 第1.11e-16节。非初等算术运算可能会产生更大的错误 错误,当然,当发生错误时,必须考虑错误传播 一些行动是复杂的

另外,有理数可以精确表示为 以10为基数的浮点数,如0.1或0.7,没有 精确表示为基数2中的浮点数,即 在内部使用,无论尾数的大小。因此,他们 如果没有 精度损失小。这可能会导致令人困惑的结果:例如 例如,楼板((0.1+0.7)*10)通常返回7,而不是 预期为8,因为内部表示类似于 7.9999999999999118

所以永远不要相信最后一位的浮点数结果,也不要相信 直接比较浮点数是否相等。如果更高 精度是必要的,任意精度的数学函数和gmp 功能可用


您可以使用
round
number\u格式
函数获取所需的小数

您可以发布代码吗?你的问题是为什么
dd
输出是集合?使用
number\u格式如何?@我的问题是为什么php或laravel会格式化字段,数据库中的字段是3.97,问题是为什么我得到3.9699999998和3.97。问题只是数字的
精度
。谢谢你的回答,我阅读了文件,我同意,但还有一个问题。。。这是随机发生的吗??因为例如3.98打印得很好。。。