Time Unit 열거를 사용하여 나노초를 초로 변환하려면 어떻게 해야 합니까?
값을 나노초에서 초로 변환하려면 어떻게 해야 합니까?
코드 세그먼트는 다음과 같습니다.
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.
이것은 무엇을 의미합니까?
TimeUnit
열거형
다음 식에서는 열거형(Java 5 이후)을 사용하여 나노초에서 초로 변환합니다.
TimeUnit.SECONDS.convert(elapsedTime, TimeUnit.NANOSECONDS)
그럼 백만으로 나누면 되겠네요
long elapsedTime = end - start;
double seconds = (double)elapsedTime / 1_000_000_000.0;
사용하시는 경우TimeUnit
변환하려면 결과가 길기 때문에 소수점 정밀도는 떨어지지만 정수 정밀도는 유지됩니다.
TimeUnit은 열거형이므로 새 열거형을 만들 수 없습니다.
다음은 10000000000ns를 초수로 변환합니다.
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;
java.time을 사용한 JDK9+ 솔루션.기간
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--
인Java 8
또는Kotlin
, 나는 사용하고 있습니다.Duration.ofNanos(1_000_000_000)
맘에 들다
val duration = Duration.ofNanos(1_000_000_000)
logger.info(String.format("%d %02dm %02ds %03d",
elapse, duration.toMinutes(), duration.toSeconds(), duration.toMillis()))
자세한 내용은 https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html를 참조해 주세요.
언급URL : https://stackoverflow.com/questions/924208/how-to-convert-nanoseconds-to-seconds-using-the-timeunit-enum
'programing' 카테고리의 다른 글
Vue/Vuex에 mapStateToProps와 같은 리액션/리듀스가 있습니까? (0) | 2022.07.31 |
---|---|
Github 페이지에 게시된 Vue 웹 사이트를 새로고침할 때 404 (0) | 2022.07.31 |
Axios 인터셉터 내에서 Vuex 변환자를 호출하는 중 (0) | 2022.07.31 |
vee 검증기에 사용자 지정 오류 추가(ErrorBag) (0) | 2022.07.31 |
vee validate 3.0 버전에서 10진수 값을 검증하는 방법 (0) | 2022.07.30 |