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,结果有一个减值 为什么会发生这种情况以及如何解决此问题?请帮助我..

您可以使用Math.abs获取绝对值。同样在数学上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);

最新更新