1. ホーム
  2. java

[解決済み] TimeUnit列挙型を使用して、ナノ秒を秒に変換する方法は?

2022-04-27 21:24:49

質問

ナノ秒から秒への変換方法を教えてください。

以下はそのコード部分です。

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 で変換すると、結果はlongになるので、小数の精度は落ちますが、整数の精度は保たれます。