转换/舍入由System.nanoTime()生成的long的问题

时间:2016-10-14 13:43:50

标签: java

我目前正在编写一个函数来衡量代码的某些部分完成工作所需的时间。为了实现这一点,我使用System.nanoTime()来测量所花费的时间。

它分为两个方法,StartMeasure和StopMeasure()。 StartMeasure()只是设置开始时间,如下所示:

long startTime = System.nanoTime();

然后,当调用StopMeasure()时,startTime会减去当前的System.nanoTime(),从而为我们留下执行代码所需的时间(以纳秒为单位)。然后我尝试将其转换为毫秒,然后将其四舍五入到两个小数点。

long measuredTime = System.nanoTime() - startTime;
double convertedTime = (double) measuredTime / 1000000.0;
String finalTime = new DecimalFormat("#.##").format(convertedTime);

但是,我这样做的价值如下:

measuredTime = 106164487952530
convertedTime = 1.0616448795253E8
finalTime = 106164487.95

这里的分工肯定会出现问题,但我似乎无法弄清楚是什么。我希望finalTime的结果在这里是“10.61”。当我将measuredTime设置为常规数而不是调用System.nanoTime时,它完全正常。我看过类似的问题,并尝试了其他解决方案(TimeUnit转换等),但似乎没有解决我的问题。

非常感谢任何帮助。 :)

0 个答案:

没有答案