Java 浮点数

题目1:

看看下面这个程序:

public class Test2{ 
public static void main(String[] args) 
{ float a = 3.4; }
} 


这样一个简单的程序编译能通过吗?

答案是:不能。

因为精度不一样。float是16位的,double是32位的。定义a = 3.4系统默认是double类型。
如果要表示float型浮点数,则应在尾部加F或f来表示。
就使用强制类型转换: float a = (float) 3.4;就是正确的了。

题目2:

再来看看这个能不能编译?

public class Test2{ 
public static void main(String[] args) 
{ Float a = new Float(3.4); }
} 

其实是没问题的。

看看Float类的源代码吧!

public Float(double value){ 
  this.value = (float)value; 
} 

题目3:

public class Test2{ 
public static void main(String[] args) { 
Float a = new Float(3.4); 
System.out.println(a.SIZE); 
a = new Float(34000); 
System.out.println(a.SIZE);
}
} 


让我们来看看此程序会输出什么呢?
我们先来看看JDK的解释吧.

public static final int SIZE
The number of bits used to represent a float value.

意思是说:通常去描述一个float值的位数.
这个是一个常量,来看看源码吧:

public static final int SIZE = 32;

final int 变量一旦被定义就不能被改变~

4:除以0是否异常?

最后想说的一点是整数除0运算时会出错,但在浮点型却不会。
Java语言定义了三个特殊的浮点值来表示浮点数除0运算时的各种出错情形:

  • Infinity:整无穷大(正数除零时的结果)
  • -Infinity:负无穷大(负数除零时的结果)
  • NaN:Not a Number(0.0/0或负数开平方根时的结果)

所以float c1 = 3.0f/0;的结果是:Infinity

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值