mysql - mysql保存纬度和经度(切号)laravel的问题
问题描述
这适用于 mysql (5.7.32) php (8.0.0) 和 laravel 8。我使用传单得到 lat 和 lng。事实上我做了测试在数据库中手动保存数字并且发生了同样的错误
当我用 phpmyadmin 查看数据库时,我看到的确切数字应该是:-32.84240531063937 但是当我用 laravel 带来这些值并执行 dd() -32.842405310639 时,删除最后一个数字(37)。
mysql 上的数据类型是 DOUBLE,没有长度/值
这就是我从数据库中获取数字的方式。
我有一个名为投诉的表,其中每个表都有 lat 和 lng 所以现在我需要获取所有具有 (comune_name = Llay Lay) 的记录,并且从那里我从第一条记录中获取 lat 和 lng。
$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 位有符号整数。
推荐阅读
- php - Reformat PHP MYSQL Array Result Multiple Levels Deep
- c# - 如何轻松地将域对象与相关实体进行比较,以便使用 EF Core 更新数据库?
- symfony - Nested variables in Symfony .env
- spring - How to use extension properties in Kotlin as constants?
- c# - TitleView 内的 Xamarin.Forms SearchBar 占用全宽
- vb.net - Parsing String into an Array (VB)
- npm - How to install gulp via NPM?
- java - 创建名为“emailController”的 bean 时出错
- c# - 检查 Gmail API 的特定用户帐户配额使用情况
- c - 错误:使用 GNU 复杂扩展时,在 'g_11' 之前需要 '='、','、';'、'asm' 或 '__attribute__'