【发布时间】:2015-07-05 06:14:22
【问题描述】:
我有一个这样的简单脚本:
request = $.ajax({
url: "/getmesomefloats.php",
type: "post",
});
request.done(function (response, textStatus, jqXHR){
// Log a message to the console
console.log(response, textStatus);
if(textStatus == 'success') {
console.log($.parseJSON(response);
}
});
getmesomefloats.php 看起来像这样:
$points[] = array(-14.27664,-170.6878);
$points[] = array(-16.29323,-165.3741);
$points[] = array(-15.86157,-162.7885);
$points[] = array(-15.89847,-160.2066);
echo json_encode($all_points);
第一个控制台日志调用吐出这个字符串:
[[-14.27664,-170.6878],[-16.29323,-165.3741],[-15.86157,-162.7885],[-15.89847,-160.2066]] success
$.parseJSON(或 JSON.parse(response))吐出这个(在控制台中“扩展”):
[Array[2], Array[2], Array[2], Array[2]]
0: Array[2]
0: -1589268.2950388812
1: NaN
length: 2
__proto__: Array[0]
1: Array[2]
0: -1813754.066977689
1: NaN
length: 2
__proto__: Array[0]
2: Array[2]
0: -1765701.8955818643
1: NaN
length: 2
__proto__: Array[0]
3: Array[2]
0: -1769809.5847921362
1: NaN
length: 2
__proto__: Array[0]
length: 4
__proto__: Array[0]
我不明白为什么我得到 NaN 以及为什么例如 -14.27664 转换为 -1589268.2950388812 ?我应该怎么做才能获得正确的值? 对于javascript来说,浮点数是否需要处理很多? 额外信息:浮标是 GPS 坐标,我(将要)在地图脚本中使用它们,此处未包含。
【问题讨论】:
-
为什么不把它们放在一个字符串中,我不确定是什么原因造成的。因为我只是浮点字符串
-
处理浮点值没有任何问题,JavaScript 对所有数字使用双精度浮点数。当我尝试在 Firefox 中使用 JSON.parse 解析该字符串时,它工作得很好。你用的是什么浏览器?
-
嗨 Guffa 和 Bob,我正在使用 Chrome。 Bob,如果我要使用字符串,你会建议我编写一些自定义函数来解析返回的数组吗?错误可能与浏览器有关吗?
-
大家好,我正面临 JSON 中负浮点值的类似问题
标签: javascript ajax json floating-point string-parsing