1
    long startTime = System.nanoTime();
    long startTimer = System.currentTimeMillis();

    M = app.decriptare_simpla(C);

    long endTime = System.nanoTime();
    long stopTimer = System.currentTimeMillis();

    //mesajul initial dupa decriptare
    System.out.println("M : " + M.toString());
    System.out.println("Decriptarea a durat: " + (endTime - startTime));
    System.out.println("Decriptarea a durat: " + (stopTimer - startTimer));

これは私に与えました:

Decriptarea a durat: 14811776
Decriptarea a durat: 15

私が聞きたいのは、これらの 2 つの数字は 1 秒何秒ですか? つまり、0.15、0.015、0.0015...? としてではなく、そのように印刷したいのですが、long追加する小数点以下の数がわかりません。他の番号についても同じ質問です。

4

2 に答える 2

5

変換は、標準 SI 単位の通常の規則に従います。

long nanoSeconds = ...
double microSeconds = nanoSeconds / 1e3;
double milliSeconds = microSeconds / 1e3;
double seconds = milliSeconds / 1e3;

// Shortcuts:
double milliSeconds = nanoSeconds / 1e6;
double sconds = nanoSeconds / 1e9;

一部の変換については、TimeUnitクラスも参照できます。たとえば、異なる時間単位の値間の変換が可能です。

long microSeconds = NANOSECONDS.toMicros(nanoSeconds);

ただし、残念ながら、時間範囲をdouble精度で指定することはできませんが、値としてのみ指定できlongます。


余談ですが、コメントにも記載されています。内部タイマーの分解能が限られているため、通常、10〜15ミリ秒のオーダーでタイムスパンを測定することは意味がありません。

于 2014-04-01T10:55:43.020 に答える