变量触达最大值时,如何计算实际增量并正确输出日志?
问题解答
嘿,我来拆解你的两个问题,一步步给你讲清楚~
一、变量总值不超上限时,计算最终值与初始值的差值
要搞定这个,核心是先明确几个关键数值:初始值、所有调整的总和(加的减的都算上),还有上限。具体步骤是这样的:
- 先算出没有上限限制时的理论值:把初始值加上所有增量,再减去所有减量
- 对比理论值和上限:如果理论值没超过上限,那最终值就是理论值;如果超了,最终值就被卡在上限
- 最后差值就是「实际最终值 - 初始值」
举两个例子:
- 比如你的示例:初始值20,先减6加10,理论值是24,上限20。最终值是20,差值就是20-20=0
- 如果初始值是15,同样减6加10,理论值19≤20,差值就是19-15=4
简单说,差值就是实际最终值和初始值的差,而实际最终值永远是「理论计算值」和「上限」里更小的那个。
二、修改示例代码,让日志准确显示实际累加的数值
你的需求是要追踪真正加到num上的数值(而不是原本计划加的10),关键在于计算「当前num距离上限还有多少空间」,然后取这个空间和计划增量的最小值,就是实际加的量。
修改后的代码如下,我还加了注释方便你理解:
var num = 20; var sub = 6; var add = 10; var maxLimit = 20; // 把上限单独抽成变量,以后改数值更方便 // 先执行减法操作 num = num - sub; // 计算实际能加的量:当前num到上限的剩余空间,和计划加的10取最小值 var actualAdded = Math.min(add, maxLimit - num); // 给num加上实际能加的量 num = num + actualAdded; // 现在日志就能准确输出实际累加的数值啦 console.log(`${actualAdded} was added to var num`);
运行这段代码的话:
- num减完sub后是14,上限20减去14还剩6,所以实际只能加6
- 累加后num刚好到20,日志输出
6 was added to var num,完全符合你的要求
这么做的好处是,不管以后add或者上限值怎么改,代码都能自动算出实际加了多少,不用手动调整日志内容~
内容的提问来源于stack exchange,提问作者Riley Moore
相关产品推荐
相关产品推荐

