[java] 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.

이것은 무엇을 의미 하는가?



답변

글쎄, 당신은 1,000,000,000으로 나눌 수 있습니다 :

long elapsedTime = end - start;
double seconds = (double)elapsedTime / 1_000_000_000.0;

TimeUnit변환 하는 데 사용 하면 결과가 길어 지므로 소수점 정밀도는 잃지 만 정수 정밀도는 유지됩니다.


답변

TimeUnit 열거 형

다음 표현식은 TimeUnit열거 형 (Java 5 이상)을 사용하여 나노초에서 초로 변환합니다.

TimeUnit.SECONDS.convert(elapsedTime, TimeUnit.NANOSECONDS)


답변

TimeUnit은 열거 형이므로 새 것을 만들 수 없습니다.

다음은 1000000000000ns를 초로 변환합니다.

TimeUnit.NANOSECONDS.toSeconds(1000000000000L);


답변

자세한 정보를 줄이려면 정적 가져 오기를 사용하십시오.

import static java.util.concurrent.TimeUnit.NANOSECONDS;

-따라서 그냥 입력

NANOSECONDS.toSeconds(elapsedTime);


답변

당신은 작성해야합니다 :

    long startTime = System.nanoTime();
    long estimatedTime = System.nanoTime() - startTime;

변수에 endTime을 지정하면 몇 나노초가 발생할 수 있습니다. 이 방법에서는 정확한 경과 시간을 얻을 수 있습니다.

그리고:

TimeUnit.SECONDS.convert(estimatedTime, TimeUnit.NANOSECONDS)


답변

이것은 정수 값보다 더 정확한 이중 형식으로 시간을 초로 변환합니다.

double elapsedTimeInSeconds = TimeUnit.MILLISECONDS.convert(elapsedTime, TimeUnit.NANOSECONDS) / 1000.0;


답변