我在和android小部件并检查两次调用System.nanoTime()之间的经过时间,并且数字很大。你如何衡量经过的时间?它应该是一秒钟的反应,而不是它的更多。感谢
答案 0 :(得分:19)
System.nanoTime()
返回粒度为纳秒的时间值;即10 -9 秒,如javadoc中所述。对System.nanoTime()
的两次调用之间的差异是相差很大的一小部分必然是一个很大的数字。
如果您想要更大粒度的时间度量,请考虑System.currentTimeMillis()
...或者只需将纳秒值除以10的适当幂,以适合您的应用。
请注意,在Android平台上有3个不同的系统时钟,支持不同的“时间测量”;见SystemClock
。如果您是为Android平台明确编程,则应阅读javadoc并确定哪种度量最适合您正在做的事情。
对于您的信息,“nano-”是国际单位制(SI)定义的标准前缀之一 - 请参阅http://physics.nist.gov/cuu/Units/prefixes.html。
如果你真的认为“他们”错了,“纳米”太小,你总是可以给NIST写一封信。我相信有人会很感激......: - )
答案 1 :(得分:7)
一秒钟包含1,000,000,000纳秒,所以只要你的数字在这个范围内,这是合理的。
答案 2 :(得分:1)
如果您希望采用小数形式,只需将value
/ 10 ^ 9与value
中的nanoTime()
区别开来。
long nanoSeconds = 500000000;
float seconds = nanoSeconds / 1000000000;
Log.i("NanoTime", nanoSeconds + " ns is the same as " + seconds + " seconds");
您的输出将是:
07-27 11:35:47.196: INFO/NanoTime(14237): 500000000 ns is the same as 0.5 seconds