TimeUnit Enum을 사용하여 나노 초를 초로 변환하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/924208

  •  06-09-2019
  •  | 
  •  

문제

나노 초에서 초로 값을 변환하는 방법은 무엇입니까?

코드 세그먼트는 다음과 같습니다.

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은 열거적이므로 새 제품을 만들 수 없습니다.

다음은 10000000000000N을 초로 변환합니다.

TimeUnit.NANOSECONDS.toSeconds(1000000000000L);

진실성을 줄이려면 정적 가져 오기를 사용할 수 있습니다.

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

-그리고 이후에 그냥 입력하십시오

NANOSECONDS.toSeconds(elapsedTime);

당신은 다음을 작성해야합니다 :

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

변수에 종료 시간을 할당하면 몇 나노초가 발생할 수 있습니다. 이 접근법에서는 정확한 경과 시간을 얻게됩니다.

그리고:

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

이렇게하면 시간을 이중 형식으로 몇 초로 변환되며 정수 값보다 정확합니다.

double elapsedTimeInSeconds = TimeUnit.MILLISECONDS.convert(elapsedTime, TimeUnit.NANOSECONDS) / 1000.0;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top