为什么这个值总是正确的?我无法弄清楚如何使用每秒“闪烁”的布尔值。
long millis = System.currentTimeMillis();
boolean blink = (Math.floor(millis/1000 + 0.5)==Math.floor(millis/1000));
答案 0 :(得分:2)
变量millis
的类型为long
,这是一个整数类型,因此在添加0.5之前,millis/1000
会被截断为整数值。
更简单的方法可能是:
boolean blink = ((millis / 1000) & 1) == 0;
这会将毫秒值转换为秒(通过除以1000),然后测试最低位以查看它是否为0.
答案 1 :(得分:2)
我就是这样做的
long millis = System.currentTimeMillis();
boolean blink = (millis % 2000) < 1000;
这使用模%
运算符来确定当前时间重复两秒窗口的距离。然后它会看到它是在窗口的前半部分(0到999)还是在后半部分(1000到1999)。这将导致一个布尔值,每秒都会交替为true和false。