`
JiongBull
  • 浏览: 7959 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

解惑3:长整除

 
阅读更多

[声明]所有代码均来自Joshua Bloch和Neal Gafter所著的<Java解惑>一书,本人仅因学习需要摘抄和注释,感谢二位作者的知识分享.

 

代码:

 

public class LongDivision {
    public static void main(String[] args) {
        final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;
        final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;

        System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
    }
}

 

 结果:

 

5

 

 

分析:

对第一个长整形变量MICROS_PER_DAY进行赋值,24*60*60*1000*1000的值已经超过一个Int型变量表示的

范围,所以将会发生截断,然后对整形进行扩容来为长整形赋值.

对第二个长整形变量MILLIS_PER_DAY 进行赋值,24 * 60 * 60 * 1000的值依旧可以用一个Int型变量存储,

所以不会发生截断

 

 

解决方案代码:

 

public class LongDivision {
    public static void main(String[] args) {
        final long MICROS_PER_DAY = 24L * 60 * 60 * 1000 * 1000;
        final long MILLIS_PER_DAY = 24L * 60 * 60 * 1000;

        System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
    }
}

 结果:

 

1000
分享到:
评论

相关推荐

    java 解惑.pdf

    **谜题3:长整除** - **描述**:程序执行长整型除法运算,但由于某些细节问题,结果并不符合预期。 - **解惑**:长整型(`long`)的除法需要特别注意溢出问题以及除数为0的情况。此外,对于负数的处理也需格外小心。...

    Java解惑 PPT1

    **谜题3:长整除** 当涉及大数字计算,如计算一天的微秒数除以毫秒数,如果不使用`long`类型可能会导致溢出。在`MICROS_PER_DAY / MILLIS_PER_DAY`的例子中,由于中间计算过程可能导致整型溢出,因此需要在乘法操作...

    iava解惑,深入剖析java

    谜题3:长整除 长整除可能涉及到`long`类型的使用。在进行大整数除法时,若结果超过了`int`类型的范围,需要使用`long`类型进行计算,例如`long result = dividend / divisor;`。 谜题4:初级问题 这个谜题可能涵盖...

    Java解惑(谜题)CHM中英文双版本

    谜题3:长整除 谜题4:初级问题 谜题5:十六进制的趣事 谜题6:多重转型 谜题7:互换内容 谜题8:Dos Equis 谜题9:半斤 谜题10:八两 Java谜题2——字符谜题 谜题11:最后的笑声 谜题12:ABC 谜题13:...

    《Java迷题解惑》PDF

    有意思的一本书,都是有点难度且又比较有意思的JAVA问题,比如表达式奇数性解惑、找零时刻、长整除、十六进制的趣数等等,特别是这本书的语言也很会激起我们的兴趣,先从实际生活中的故事说起,然后了解所需,最后用...

    Java解惑(中文)

    ### Java解惑:常见误区与解答 #### 一、判断奇数的方法问题 **知识点概述:** 本节讨论了一个常见的编程误区,即如何正确判断一个整数是否为奇数。通常,开发人员会认为可以通过模运算(%)来判断一个整数是否能...

    Java Puzzlers 中文版(Java解惑)

    Java Puzzlers 中文版(Java解惑) Java 谜题 1——表达式谜题 谜题 1:奇数性 下面的方法意图确定它那唯一的参数是否是一个奇数。这个方法能够正确运转 吗? public static boolean isOdd(int i){ return i % 2 == 1...

    Java 解惑

    ### Java 解惑知识点详解 #### 一、表达式谜题:奇数性的判断 **谜题背景** 在Java中,有一个方法意图判断一个整数是否为奇数。该方法使用了模运算(%),但其行为并非总是符合预期。 **问题描述** 方法`public ...

    java解惑

    按照数学定义,奇数是不能被2整除的整数,即除以2的余数为1。然而,这个方法只在一半的情况下能给出正确的答案,另一半情况则错误地判定负奇数为偶数。 问题的根源在于Java中取余操作符`%`的行为。Java的取余操作符...

    Java谜题解惑 中文版CHM格式

    该恒等式具有正确的含义,但是当与 Java 的截尾整数整除操作符相结合时,它就意味着:当取余操作返回一个非零的结果时,它与左操作数具有相同的正负符号。 当 i 是一个负奇数时,i % 2 等于-1而不是1, 因此 isOdd ...

    Java 谜题解惑

    ### Java谜题解惑知识点详解 #### 一、奇数性的判断 **题目背景:** 在Java编程中,经常需要判断一个整数是否为奇数。一个常见的方法是使用模运算符`%`来实现这一功能。然而,在实际应用过程中,这种简单的实现...

    Java 解惑 (陈昊鹏 译)

    《Java解惑》这本书通过实例深入讲解了Java编程中一些容易被忽略的知识点,帮助读者避免在编程中犯错。 书中提到了两个具体的实例,通过这两个实例,我们可以学习到Java中关于整数运算和浮点数表示方面的知识。 第...

    三年级和倍问题PPT学习教案.pptx

    3. 接着,我们可以发现27可以被3整除,这意味着3是1倍量的3倍,所以白色兔子有9只,灰色兔子则是9的2倍,即18只。 **算术方法**: 1. 设白色兔子的数量为x,那么灰色兔子的数量就是2x。 2. 根据题目给出的总数量,...

Global site tag (gtag.js) - Google Analytics