如何将值从纳秒转换为秒?
这是代码段:
import java.io.*;
import java.util.concurrent.*;
..
class Stamper {
public static void main (String[] args) {
long start = System.nanoTime();
//some try with nested loops
long end = System.nanoTime();
long elapsedTime = end - start;
System.out.println("elapsed: " + elapsedTime + "nano seconds\n");
//convert to seconds
TimeUnit seconds = new TimeUnit();
System.out.println("which is " + seconds.toSeconds(elapsedTime) + " seconds");
}}
Run Code Online (Sandbox Code Playgroud)
错误是
Stamper.java:16: enum types may not be instantiated.
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
pyt*_*ick 349
TimeUnit 枚举以下表达式使用TimeUnit枚举(Java 5和更高版本)将纳秒转换为秒:
TimeUnit.SECONDS.convert(elapsedTime, TimeUnit.NANOSECONDS)
Run Code Online (Sandbox Code Playgroud)
Ada*_*eld 195
好吧,你可以除以1,000,000,000:
long elapsedTime = end - start;
double seconds = (double)elapsedTime / 1_000_000_000.0;
Run Code Online (Sandbox Code Playgroud)
如果你使用TimeUnit转换,你会得到你的结果很长,所以你将失去小数精度,但保持整数精度.
Nic*_*eys 57
TimeUnit是枚举,因此您无法创建新的.
以下将1000000000000ns转换为秒.
TimeUnit.NANOSECONDS.toSeconds(1000000000000L);
Run Code Online (Sandbox Code Playgroud)
Zol*_*tán 21
要减少详细程度,可以使用静态导入:
import static java.util.concurrent.TimeUnit.NANOSECONDS;
Run Code Online (Sandbox Code Playgroud)
- 此后只是打字
NANOSECONDS.toSeconds(elapsedTime);
Run Code Online (Sandbox Code Playgroud)
你应该写:
long startTime = System.nanoTime();
long estimatedTime = System.nanoTime() - startTime;
Run Code Online (Sandbox Code Playgroud)
在变量中分配endTime可能会导致几纳秒.在这种方法中,您将获得确切的经过时间.
然后:
TimeUnit.SECONDS.convert(estimatedTime, TimeUnit.NANOSECONDS)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
236979 次 |
| 最近记录: |