mysql 保存纬度和经度的问题(削减数字)laravel

issue with mysql save latitude and longitude (cut numbers) laravel

这与 mysql (5.7.32) php (8.0.0) 和 laravel 8 一起使用。 我使用传单获取纬度和经度。事实上,我做了测试,在数据库中手动保存号码,但同样的错误发生了

当我用 phpmyadmin 查看数据库时,我准确地看到了它应该是的数字: -32.84240531063937 但当我将这些值与 laravel 并执行 dd() -32.842405310639 删除最后的数字 (37)。

mysql 上的数据类型是 DOUBLE,没有 Length/Values

这就是我从数据库中获取数字的方式。

我有一个叫做 table 的投诉,其中每个投诉都有经纬度 所以现在我需要获取所有具有 (comune_name = Llay Lay) 的记录 我就是从那里得到第一条记录的纬度和经度的。


$complaints = Complaint::where('comune_name', 'Llay Llay')->get()->toArray();

$denounced_lat = $complaints[0]['lat']; //lat of first complaint
$denounced_lng = $complaints[0]['lng']; //lng of first complaint

  dd($denounced_lat); //acá está el error

我在数据库中看到的数字是:-32.84240531063937 而dd()抽取的数字是:-32.842405310639

谢谢 :)

编辑:最后我保存为 VARCHAR。

PHP 与您的数据库解决方案相比,工作精度不同。

如果您想保持精度,请考虑将它们存储为 64 位有符号整数。

要在逗号 ',' 后保留一个长数字,您可以使用 decimal:

    $table->decimal('lng', 10, 18);
    $table->decimal('lat', 10, 18);

DECIMAL 列的声明语法是 DECIMAL(M,D)。参数取值范围如下:

M是最大位数(精度)。它的范围是 1 到 65。

D是小数点右边的位数(刻度)。它的范围是0到30,并且不能大于M。

值得一提的是,您应该将其转换为模型中 $cast 属性中的浮点数,在 Laravel 文档中,有十进制转换,但尚未准备好! 有关详细信息,请参阅

mysql decimal