如何使用TimeUnit枚举将纳秒转换为秒?
如何将一个值从纳秒转换为秒?
以下是代码段:
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"); }}
错误是
Stamper.java:16: enum types may not be instantiated.
这是什么意思?
那么,你可以分成十亿:
long elapsedTime = end - start; double seconds = (double)elapsedTime / 1000000000.0;
如果你使用TimeUnit
进行转换,你会得到你的结果很长,所以你会失去小数精度,但保持整数精度。
TimeUnit
枚举
以下expression式使用TimeUnit
枚举(Java 5及更高版本)将纳秒转换为秒:
TimeUnit.SECONDS.convert(elapsedTime, TimeUnit.NANOSECONDS)
TimeUnit是一个枚举,所以你不能创build一个新的。
以下将转换10000000000ns到秒。
TimeUnit.NANOSECONDS.toSeconds(1000000000000L);
为了减less冗长,可以使用静态导入:
import static java.util.concurrent.TimeUnit.NANOSECONDS;
从今以后只是types
NANOSECONDS.toSeconds(elapsedTime);
你应该写:
long startTime = System.nanoTime(); long estimatedTime = System.nanoTime() - startTime;
在variables中分配endTime可能会导致几个纳秒。 在这种方法中,你会得到确切的时间。
接着:
TimeUnit.SECONDS.convert(estimatedTime, TimeUnit.NANOSECONDS)
这将以double格式将时间转换为秒,这比整数值更精确:
double elapsedTimeInSeconds = TimeUnit.MILLISECONDS.convert(elapsedTime, TimeUnit.NANOSECONDS) / 1000.0;