【问题标题】:Javascript json_encode array of floatsJavascript json_encode 浮点数组
【发布时间】:2020-10-15 22:03:53
【问题描述】:

在 php 中,我收集 geocoords 并围绕它们。转储的结果符合预期:

Array(
    [0] => Array
        (
            [0] => 37.76073
            [1] => -122.439948
        )

    [1] => Array
        (
            [0] => 37.973535
            [1] => -122.531087
        )

    [2] => Array
        (
            [0] => 37.973535
            [1] => -122.531087
        )    
)

( 重复也是预期的。) 然后我将它们传递给 javascript 以在地图上使用:

var locations = <?php echo json_encode( $geo_locations ); ?>;

但是当我将位置记录到控制台时,第二个元素的值发生了变化:

0: (2) [37.76073, -122.439948]
1: (2) [37.97368106291033, -122.53094093708967]
2: (2) [37.973535, -122.531087]

我以前从未见过这种行为。是因为json_encode吗?还是别的什么?

【问题讨论】:

  • 似乎 json_encoders 更喜欢字符串。对浮点数进行编码可能会产生“意外”结果。

标签: javascript php arrays


【解决方案1】:

这与 JSON 没有任何关系。这就是计算机中处理浮点数的方式。

另请参阅:Is floating point math broken?

【讨论】:

    猜你喜欢
    • 2014-01-13
    • 1970-01-01
    • 2013-09-19
    • 2011-04-15
    • 2015-12-12
    • 2016-08-28
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多