0

我有一行代码说——

var latitude = JSON.stringify(place.lat);

当我做警报(纬度)时——它给了我输出“33.232342”。但我想要这个数字,所以当我这样做的时候

var latitude = parseFloat(JSON.stringify(place.lat));

我得到了 NaN。有人可以告诉我可能是什么问题吗?

谢谢

4

6 回答 6

1

place.lat的已经是string. 这样做JSON.stringify()使""33.232342"".
只是:

parseFloat(place.lat);
于 2013-04-18T18:54:48.630 回答
0

JSON.stringify将原语转换为字符串,因此:

JSON.stringify(5.1)

返回 5 个字符的字符串

"5.1"

将这样的值传递到parseFloat结果中NaN只需不要JSON.stringifyvalue,您的代码应该可以正常工作。

值得注意的是,JSON 规范只允许对象和数组作为 JSON 表示中的顶级元素,因此“JSON-ify”原始数字不符合规范(但您的浏览器无论如何都会这样做)。

于 2013-04-18T18:54:42.363 回答
0

问题是 place.lat 是一个字符串,所以当你对它进行字符串化时,你会得到一个带引号的字符串。

这与使用相同的结果

parseFloat(JSON.stringify("3.5"))

那是

NaN

一个解决方案是直接解析 place.lat :parseFloat(place.lat)

如果你想解析一个带引号的字符串中的数字,你也可以这样做

parseFloat(str.slice(1,-1))
于 2013-04-18T18:54:45.490 回答
0

问题根源在这里:

JSON.stringify(place.lat)return "' 20.0120132312'",其中有一个前导'。只需使用:

parseFloat(place.lat);
于 2013-04-18T18:54:49.943 回答
0

JSON.stringify如果它已经是一个对象,你为什么要ing 它?

做吧parseFloat(place.lat)

于 2013-04-18T18:55:07.867 回答
0

您必须调用:

parseFloat(JSON.parse(latitude))
于 2013-04-18T18:56:25.683 回答