Long型整数,缄默溢出

/**

  • 长整数问题
  • @author husky
  • */
    public class LongDemo {
    public static void main(String[] args) {
    /**
    * 问题3:长整数
    /
    //计算一天的微妙数
    Long microsBefore = (long) (24
    606010001000);
    //计算一天的毫秒数
    Long millisBefore = (long) (24
    60601000);
    //我们想要的结果是1000
    //结果为5
    System.out.println("before: " + microsBefore/millisBefore);

      /**
       * 解析:
       *  计算毫秒数时因为在int的表示范围内,可以正确的表示。
       *  但是,计算微秒数的时候采用的int进行的计算,然后才转型,对于超过int表示范围的结果,产生缄默溢出
       *  java支持自动的向上转型,但在享受这种便利的时候一定要注意缄默溢出的情况。
       */
      System.out.println("microsBefore: " + microsBefore);
      System.out.println("millisBefore: " + millisBefore);
    
      /**
       * 解决:
       *  在使用长整数的时候,进行类型上面的转型的情况的时候在第一个操作数后面显示的标明为long型
       *  eg: Long microsBefore = (long) (24L*60*60*1000*1000);   
       *  即使可能表示的结果是正确的情况下,显示的标明也是一种好的习惯
       */
      //计算一天的微妙数
      Long microsAfter = (long) (24L*60*60*1000*1000);        
      //计算一天的毫秒数
      Long millisAfter = (long) (24L*60*60*1000);
      //我们想要的结果是1000
      //结果为5
      System.out.println("after: " + microsAfter/millisAfter);
      System.out.println("microsAfter: " + microsAfter);
      System.out.println("millisAfter: " + millisAfter);

    }
    }

转载于:https://www.cnblogs.com/husky/p/5792675.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值