2017-07-16 47 views
0

我有一个函数,它将通过单击按钮从currentTime的计时器产生数组值。在这种情况下是这样的结果:JavaScript十进制缩减产生不正确的结果

var data_catch = ["0", "24.871604", "27.1788", "29.69", "29.100", "30.570661"]; 

然后我需要得到具有规则排列值之间的持续时间,导致我用这样的方式“下一个值将由前值减少”:

var data_duration = []; 
for (var i = 1; i < data_catch.length; i++) { 
    data_duration.push(data_catch[i]-data_catch[i-1]); 
} 
console.log(data_duration); 

data_duration的值不能为负数,因为定时器总是在前进,当前时间总是比先前的当前时间有更大的值。但在这种情况下data_duration的结果是:

data_duration = [ 
    24.871604, 
    2.3071959999999976, 
    2.5112000000000023, 
    -0.5899999999999999, 
    1.4706609999999998 
]; 

结果都因为这减少29.100 - 29.69 这是为什么发生,如何解决这一问题的一个负值?请帮我..

+0

这是一个简单的数学问题:你真的相信29.69小于29.100? –

+0

其实我认为问题是他如何生成数组中的值,因为29.69 - 29.100> 0并不意味着破浮点 – lustoykov

+0

雅我已经读过,但仍不知道如何解决这个问题.. – fandiahm

回答

2

您可以使用Math.abs得到绝对value.Also数学29.69大于29.100

var data_catch = ["0", "24.871604", "27.1788", "29.69", "29.100", "30.570661"]; 
 
var data_duration = []; 
 
for (var i = 1; i < data_catch.length; i++) { 
 
    data_duration.push(Math.abs(data_catch[i] - data_catch[i - 1])); 
 
} 
 

 
console.log(data_duration);

+0

这是解决了我的问题。我不知道这个Math.abs()我会继续学习。非常感谢... – fandiahm

+0

这不是一个好的解决方案,当用户点击按钮时,需要为data_catch设置正确的值。 – Atmahadli

+0

@Atmahadli解决方案的目标是演示'Math.abs()'的用法。这个问题没有描述任何'button'。我很抱歉,如果我错过了任何要求 – brk

相关问题