这个程序会打印出什么呢?
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 的计算“确实”溢出了。尽管计算的结果适合放入long中,并且其空间还有富余,但是这个结果并不适合放入int 中。这个计算完全是以int 运算来执行的,并且只有在运算完成之后,其结果才被提升到long,而此时已经太迟了:计算已经溢出了。
Java 不具有目标确定类型的特性,这是一种语言特性,其含义是指存储结果的变量的类型会影响到计算所使用的类型。
下面的程序将打印出我们所期望的1000:
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);
}
}
这个教训很简单:当你在操作很大的数字时,千万要提防溢出——它可是一个缄默杀手。即使用来保存结果的变量已显得足够大,也并不意味着要产生结果的计算具有正确的类型。当你拿不准时,就使用long 运算来执行整个计算。
分享到:
相关推荐
谜题3:长整除 谜题4:初级问题 谜题5:十六进制的趣事 谜题6:多重转型 谜题7:互换内容 谜题8:Dos Equis 谜题9:半斤 谜题10:八两 第3章 字符之谜 谜题1l:最后的笑声 谜题12:ABC 谜题13:动物庄园 谜题14:...
谜题3:长整除 9 谜题4:初级问题 11 谜题5:十六进制的趣事 13 谜题6:多重转型 15 谜题7:互换内容 17 谜题8:Dos Equis 19 谜题9:半斤 21 谜题10:八两 23 第3 章字符之谜 25 谜题11:最后的笑声 25 ...
Java谜题1——表达式谜题 3 谜题1:奇数性 3 谜题2:找零时刻 4 谜题3:长整除 6 谜题4:初级问题 7 谜题5:十六进制的趣事 8 谜题6:多重转型 10 谜题7:互换内容 11 谜题8:Dos Equis 13...
谜题3:长整除 谜题4:初级问题 谜题5:十六进制的趣事 谜题6:多重转型 谜题7:互换内容 谜题8:Dos Equis 谜题9:半斤 谜题10:八两 Java谜题2——字符谜题 谜题11:最后的笑声 谜题12:ABC 谜题13:...
谜题3:长整除 谜题4:初级问题 谜题5:十六进制的趣事 谜题6:多重转型 谜题7:互换内容 谜题8:Dos Equis 谜题9:半斤 谜题10:八两 Java谜题2——字符谜题 谜题11:最后的笑声 谜题12:ABC 谜题13:...
数学运算 除法: / 整除: // 求余: % print(31/3)print(31//3)print(31%3) 运行结果: 10.333333333333334 10 1 python少儿编程基础课趣解数字谜题全文共19页,当前为第4页。 龙腾数 如果数字各个位数之和等
谜题1:奇数性 下面的方法意图确定它那唯一的参数是否是一个奇数。这个方法能够正确运转吗? public static boolean isOdd(int i){ return i % 2 == 1; } 奇数可以被定义为被2整除余数为1的整数。...
Java谜题1——表达式谜题 谜题1:奇数性 下面的方法意图确定它那唯一的参数是否是一个奇数。这个方法能够正确运转吗? public static boolean isOdd(int i){ return i % 2 == 1; } 奇数可以被定义为被2整除余数为...
Java 谜题 1——表达式谜题 谜题 1:奇数性 下面的方法意图确定它那唯一的参数是否是一个奇数。这个方法能够正确运转 吗? public static boolean isOdd(int i){ return i % 2 == 1; } 奇数可以被定义为被 2 整除余数...
Java 谜题解惑。如:奇数性、找零时刻、长整除、十六进制等相关疑惑。
谜题 编程难题和挑战,ABAP中的示例解决方案 我的目的是演示使用ABAP语言的许多方面来解决ABAP中这些难题和挑战的不同方法,同时给出一些有关如何解决ABAP中实际问题的想法。 :) 希望我能够阐明ABAP方法的一些异同...