Java除法运算的陷阱有哪些呢?
数学除法规定,0不能做除数,因为会得到一个无穷大数据。
西面看看Java中如何处理这些特殊情况:
1、整数的除法:
0做除数抛运行时异常;两整数商会做取整运算,Float或Double与一个整数做除法运算,则商位Float或者Double类型,例如:
System。 out。println("------------Int相关除法----------");
System。out。println("12/10="+12/10);
System。out。println("12f/10="+12f/10);
System。 out。println("12d/10="+12d/10);
Sys...全部
数学除法规定,0不能做除数,因为会得到一个无穷大数据。
西面看看Java中如何处理这些特殊情况:
1、整数的除法:
0做除数抛运行时异常;两整数商会做取整运算,Float或Double与一个整数做除法运算,则商位Float或者Double类型,例如:
System。
out。println("------------Int相关除法----------");
System。out。println("12/10="+12/10);
System。out。println("12f/10="+12f/10);
System。
out。println("12d/10="+12d/10);
System。out。println("12/10f="+12/10d);
System。out。println("12/10d="+12/10f);
------------Int相关除法----------
12/10=1
12f/10=1。
2
12d/10=1。2
12/10f=1。2
12/10d=1。2
2、Double(或Float)除法运算:
0可以做除数,得到的是一个分正负的无穷大;当两个数的绝对值均为0。0时候,商等于NaN。
当0。0/x,x不等0。0时候,得到的一个带符号位0。0:
package lavasoft。zerotest;
/**
* 浮点型数据的除法运算测试
*
* @author leizhimin 2009-12-21 9:00:37
*/
public class TestZero {
public static void main(String[] args) {
System。
out。println("------------Double型----------");
Double x1 = div(2。3, 0。0);
Double x2 = div(2。3, -0。
0);
Double x3 = div(0。0, 0。0);
Double x4 = div(0。0, -0。0);
Double x5 = div(0。0, 0。1);
Double x6 = div(0。
0, -0。1);
if (x1。isInfinite()) System。out。println("x1无穷大!");
if (x2。isInfinite()) System。out。println("x2无穷大!");
if (x3。
isNaN()) System。out。println("x3非数字!");
if (x4。isNaN()) System。out。println("x4非数字!");
if (x1 == Double。
POSITIVE_INFINITY) System。out。println("x1 = Double。POSITIVE_INFINITY");
if (x2 == Double。NEGATIVE_INFINITY) System。
out。println("x1 = Double。NEGATIVE_INFINITY");
if (x3 == Double。NaN) System。out。println("x3 = Double。
NaN");
if (x4 == Double。NaN) System。out。println("x4 = -Double。NaN");。收起