나노초에서 초로 값을 변환하는 방법은 무엇입니까?
코드 세그먼트는 다음과 같습니다.
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;
답변
JDK9 사용 + 용액 java.time.Duration을
Duration.ofNanos(1_000_000L).toSeconds()
https://docs.oracle.com/javase/9/docs/api/java/time/Duration.html#ofNanos-long-
https://docs.oracle.com/javase/9/docs/api/java/time/Duration.html#toSeconds–