gpt4 book ai didi

javascript - 在十进制小时中添加/减去分钟

转载 作者:行者123 更新时间:2023-12-03 11:44:34 27 4
gpt4 key购买 nike

当我尝试添加 15 分钟然后减去 5 分钟 3 次时,出现错误 2.7755575615628914e-17。应该为零。请帮忙。

http://jsfiddle.net/3zq4napd/

$(document).on('click', '.add', function(event) {
var input = $('input');

var inputVal = parseFloat($('input').val());
var addVal = parseFloat($(this).data('num'));
var newVal = inputVal + (addVal / 60);

$(input).val(newVal);
});

$(document).on('click', '.sub', function(event) {
var input = $('input');

var inputVal = parseFloat($('input').val());
var subVal = parseFloat($(this).data('num'));
var newVal = inputVal - (subVal / 60);

$(input).val(newVal);
});

最佳答案

这是处理 float 时的正常行为:它们可以精确地用二进制表示,但并非所有 float 都可以精确地用十进制表示。四舍五入应该有帮助。

编辑:避免浮点错误的最佳方法是避免处理不能完全以二进制形式表示的数字 - 即避免除 2 的幂之外的任何除法>。由于 60 不是 2 的幂,因此除以 60 将会导致浮点错误。因此,如果您可以完全在分钟、秒或(JavaScript 标准)毫秒内完成计算,那么您完全处于积分状态。

(您甚至可以以二十分钟的 block 来计算,因为您的最小单位是 5 分钟,即 20/2^2,因此您仍然是二进制安全的。但是如果您计算以小时(即六十分钟 block )为单位,进一步除以 3;由于 3 的分数无法用二进制表示,因此会弹出错误。)

关于javascript - 在十进制小时中添加/减去分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26112346/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com