浮点数是Javascript正在四舍五入

时间:2014-12-07 13:54:21

标签: javascript arrays

我在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!

3 个答案:

答案 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