我有一行代码 -
var latitude = JSON.stringify(place.lat);
当我发出警报(纬度)时 - 它给我输出“33.232342”。但是当我这样做时我想要这个数字
var latitude = parseFloat(JSON.stringify(place.lat));
我得到了NaN。有人能告诉我问题可能是什么吗?
由于
答案 0 :(得分:1)
您的place.lat
已经是string
。因此,JSON.stringify()
会""33.232342""
只是:
parseFloat(place.lat);
答案 1 :(得分:0)
JSON.stringify
将原语转换为字符串,所以:
JSON.stringify(5.1)
返回5个字符的字符串
"5.1"
将此类值传递到parseFloat
会产生NaN
。 根本不要JSON.stringify
值,您的代码应该可以正常工作。
值得注意的是,JSON spec仅允许对象和数组作为JSON表示中的顶级元素,因此它不符合规范“JSON-ify”原始数字(但您的浏览器会执行此操作)反正)。
答案 2 :(得分:0)
问题是place.lat是一个字符串,所以当你对它进行字符串化时,你会得到一个带引号的字符串。
与
相同的结果parseFloat(JSON.stringify("3.5"))
即
NaN
解决方案是直接解析place.lat:parseFloat(place.lat)
如果要解析带引号的字符串中的数字,也可以执行
parseFloat(str.slice(1,-1))
答案 3 :(得分:0)
问题源于此:
JSON.stringify(place.lat)
会返回"' 20.0120132312'"
,其中包含'
个前导parseFloat(place.lat);
。只需使用:
{{1}}
答案 4 :(得分:0)
如果它已经是对象,你为什么要JSON.stringify
?
只需parseFloat(place.lat)
。
答案 5 :(得分:0)
您必须调用:
parseFloat(JSON.parse(latitude))