我在javascript数组中遇到浮点数的奇怪行为。
当我像这样循环数组时:
$.each(values, function(key,data) {
console.log(key +": "+data);
})
我正确地看到了数字如下:
4: 39.9283296
spline:167 5: -3.4983312
spline:167 6: 823.487609863281
但是当我尝试使用数组索引直接访问数据时:
console.log(data[4] + " " +data[5] + " " +data[6])
数字四舍五入:
2 8 3
如果有人可以解释这里发生了什么,以及如何访问原始数据,我真的会推荐它。 TIA!
答案 0 :(得分:1)
您似乎正在尝试访问类似数组的字符串。您的data
变量包含一个字符串,因此当您调用data[4]
时,您将获得字符串中的第5个字符。
有parseFloat
方法将字符串解析为浮点数,如果你想这样的话。
答案 1 :(得分:0)
我从评论开始,但我只是写一个答案。
您正在解决data
并将其视为您的数组,而实际上这只是一个值。
检查您的第一个值:39.9283296
。
指数4/5/6相应地为2/8/3。
这就是你所看到的,而不是"浮动"数字四舍五入。
检查您从哪里获得data
,看起来您只需要data
本身作为您的价值。
答案 2 :(得分:0)
您的代码是这样的:
$.each(values, function(key,data) {
console.log(key +": "+data);
})
让我们来看看第一行输出:
4: 39.9283296
好的,key
是什么,data
是什么?
key: "4"
data: "39.9283296" // I assume it's string according to result you got
那么,console.log(data[4] + " " +data[5] + " " +data[6])
会给你什么?
"39.9283296"[4] // 2
^
"39.9283296"[5] // 8
^
"39.9283296"[6] // 3
^
你明白了,2 8 3
。