解决方案 »

  1.   

    public static void main(String[] args) {
    long start = System.nanoTime();//纳秒
    System.out.println(start);
    long end   = System.nanoTime();//纳秒
    System.out.println(end);
    BigDecimal diff = BigDecimal.valueOf(end-start,10);//秒级差值
    System.out.println(diff);
    BigDecimal result = diff.setScale(9, RoundingMode.HALF_UP);//调节精度
    System.out.println(result);
    java.text.DecimalFormat fmt = new DecimalFormat("#.#########s");//输出格式化
    System.out.println(fmt.format(result));
    }
      

  2.   

    BigDecimal  非常强大,楼上给出了编码,我都不给了,很好用
      

  3.   

    BigDecimal   专门做这个
      

  4.   

    噢,那如果做一个倒计时器,纳秒级别的,也可以用这个BigDecimal咯?谢谢!
      

  5.   

    精确的话肯定是要用到BigDecimal的,如果你是用到纳秒级别的肯定要这样噻
    如果你只是想要输出的时候保留小数位数的话,那么你可以使用System.out.printf()语句
      

  6.   

    纳秒级的计时器没有什么太大的意义,计算机执行指令都是毫秒级的。
    我们通常设计的程序,计时器最小精确的时间单位,一般都是秒级的。多数都是每天执行一次的任务。
    当然了,JDK中有Timer的源码,已经有一个相对较好的实现了。
      

  7.   

    噢,好的。主要是现在想处理的一些时间的数据都是纳秒级别的。。像下面这样的UDP协议发送接收事件,所以想弄一个纳秒级别的计时器。。
    r 0.001408067 _1_ RTR  --- 0 AODV 48 [0 ffffffff 0 800] ------- [0:255 -1:255 30 0] [0x2 1 1 [1 0] [0 4]] (REQUEST)
    s 0.001408067 _1_ RTR  --- 0 AODV 44 [0 0 0 0] ------- [1:255 0:255 30 0] [0x4 1 [1 4] 10.000000] (REPLY)
    s 0.003200000 _0_ AGT  --- 1 cbr 200 [0 0 0 0] ------- [0:0 1:0 32 0] [1] 0 0
    r 0.003200000 _0_ RTR  --- 1 cbr 200 [0 0 0 0] ------- [0:0 1:0 32 0] [1] 0 0
      

  8.   

    使用 System.nanoTime(); 就能取到纳秒值了。
      

  9.   

    怎么样取计时器里的每一个时间呢?比如毫秒的话,想取0.000,0001,0.002。这样,但试了一下System.currentTimeMillis() ,发现会丢失一些时间啊。。