如何使用不断递增的整数检测设定间隔的通过
Posted
技术标签:
【中文标题】如何使用不断递增的整数检测设定间隔的通过【英文标题】:How to detect the passing of a set interval with a constantly incrementing integer 【发布时间】:2017-03-09 12:49:31 【问题描述】:我认为这应该很容易,但我被难住了。我有一个浮点数存储在数据库中(我们称之为 N),每 5-10 秒更新一次,总是增加一些未知量(通常在 0.0 到 200.0 之间)。我需要显示每次数字超过 304.8 间隔时发生的“里程碑”。
尝试使用 mod (304.8 % N) 来检查它何时为 0,但这是行不通的,因为 N 可以从 302.2 变为 308.6,例如,永远不会有 0 余数。
我想计算达到的里程碑数量(每次超过 304.8 时),并且每次都向用户发出通知。出于某种原因,我想不出一个合理的方法来做到这一点。
问题出现在我的 android (java) 程序中。
【问题讨论】:
好吧,如果当前值的模数小于前一个值的模数,就达到了里程碑。 div 运算符按您的要求执行。304.8/304.8 = 1
, 304.8*2 / 304.8 = 1
... 等等。只需除以你的数。
@Jaked222 请编辑您的标题以准确描述您的问题的摘要。
【参考方案1】:
您可以将n
除除以里程碑并确定结果。然后将其与之前的结果进行比较。如果新的比之前的大,那么您已经通过了一个里程碑:
double interval = 304.8;
double prev = // saved from the previous round
double curr = prev + someIncrement();
if (Math.floor(curr/interval) > Math.floor(prev/interval))
milestonePassed();
prev = curr; // For next round
【讨论】:
谢谢,这对我的实施很有帮助以上是关于如何使用不断递增的整数检测设定间隔的通过的主要内容,如果未能解决你的问题,请参考以下文章