gpt4 book ai didi

java - 获取时间需要一个方法来运行

转载 作者:行者123 更新时间:2023-12-01 12:49:35 25 4
gpt4 key购买 nike

尝试使用我通常用来获取持续时间的方法时,我得到了奇怪的结果:

float start = System.nanoTime();
//Do stuff
float duration = System.nanoTime() - start;
float durationInSeconds = duration / 1000000000.0f;

所以我尝试在这个手电筒应用程序中创建一个闪光灯:

public void onClick(DialogInterface dialog, int id) {

isFlashOn = true;
isStrobeActive = true;

// Perform actual strobe
strobeHandler.post(new Runnable() {
float currDuration = 0;
final float deltaTime = 1/60f;
final float deltaTimeInMil = deltaTime * 1000;

@Override
public void run() {
float strobePerSecond = 1 / currentStrobeValue;

if (!isStrobeLightOn) {
if (currDuration > strobePerSecond) {
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
currDuration -= strobePerSecond;
isStrobeLightOn = true;
}
} else {
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
isStrobeLightOn = false;
}
currDuration += deltaTime;
strobeHandler.postDelayed(this, (long) deltaTimeInMil);
}
});
}

但是,日志返回 0.0 或 3.052E-5。我不太确定我做错了什么,但我想我需要一些帮助才能弄清楚。一如既往的感谢。

编辑:我假设开始时间和结束时间非常相似,当它们相减并四舍五入时,它们都是 0。

最佳答案

我猜测是因为如果数字太大,float 就不够准确。为什么不像你应该的那样使用long

long start = System.nanoTime();
//Do stuff
long duration = System.nanoTime() - start;
double durationInSeconds = duration / 1000000000.0d;

关于java - 获取时间需要一个方法来运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336975/

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