Javascript 小数归约产生不正确的结果

标签 javascript jquery

我有一个函数,可以通过单击按钮从计时器的当前时间生成数组值。在本例中,结果如下:

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的值永远不应该是负数,因为计时器总是向前走,并且 currentTime 总是比之前的 currentTime 具有更大的值。但在这种情况下 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);

关于Javascript 小数归约产生不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45129383/

相关文章:

jquery - 为图像添加 ID

javascript - 使用 jQuery 从数据库访问对象

javascript - 跨站脚本注入(inject)

javascript - 将桌面用户重定向到另一个页面,将移动用户重定向到主页

javascript - Google Chrome 同步检查是否通过 API/扩展启用?

javascript - Angular.js : on form submit action is not calling

java - 在 Android Webview 中以编程方式填写表单 - JavaScript

javascript - 将边界传递给 google places API

javascript - Bootstrap Modal 按钮不响应点击

javascript - 我的代码中的 Var 不起作用