【问题标题】:MySQL ST_AsGeoJSON is returning floating point figures not in original dataMySQL ST_AsGeoJSON 正在返回不在原始数据中的浮点数
【发布时间】:2018-07-13 09:03:47
【问题描述】:

我正在使用 PHP 在数据库中保存一行。一个字段的类型为geometry。我用坐标52.521913.4132 保存POINT

当我检索行时,我使用ST_AsGeoJSON。它返回我:

"geometry": {
    "type": "Point",
    "coordinates": [
        52.5219000000000022509993868879973888397216796875,                        
        13.413199999999999789679350215010344982147216796875
    ]
}

我想要没有多余数字的结果。这仅发生在我的登台服务器上。在我的本地服务器上,它返回正确的坐标。

【问题讨论】:

    标签: php mysql geojson


    【解决方案1】:

    这是一个常见问题。 你可以从这里阅读更多相关信息:https://bugs.php.net/bug.php?id=41357

    它是如何产生的? 当你从浮点数中减去一个整数时,有时它会给你这种类型的错误。 例如:

    var_dump(214.16569 - 214);

    var_dump(114.16569 - 114);

    解决方案:

    有几种方法可以解决此问题。 我使用下面的代码来限制小数点后的数字。最多限制为 4 位:

    $value = number_format($value, 4);

    您可以使用上面的代码来格式化您的数据。它只会显示小数点后4位。

    【讨论】:

    • 但这是 MySQL 返回的数字。这似乎是 MySQL 问题而不是 PHP 问题。
    猜你喜欢
    • 2013-07-19
    • 1970-01-01
    • 2012-04-15
    • 2019-10-10
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多