java整型和浮点型知识整理

首先简单介绍下整型与浮点型。计算机中的数据存储有整型和浮点型两种形式。整型是用二进制形式来表示所有正整数和负整数以及零,由于存储空间的限制,只能表示一定范围的整数。而浮点型则是用二进制的科学计数法形式来表示实数,由于存储空间的限制,不可能精确存储所有的实数,有些实数只能用四舍五入的近似形式存储。一般的计算机语言像C#,c++以及Java等都有相应的类型来实现整型与浮点型。例如在Java中,整型byte,short,int,long,用来表示不同范围的整数,而浮点型则有float和double用来表示不同精度和范围的浮点数。目前整型与浮点型的运算基本都是由运算器来实现,并且这些运算器也大多采用了统一的标准,例如浮点型普遍采用IEEE-754,所以在高级语言中这些基本类型的特点并没有太大的差异。

下面来详细看下,在编程的时候使用这两种类型的时候需要注意的一些问题。

1.小学的时候我们就知道零不能作为除数,在计算机的世界里也是一样,我们需要考虑所有除数是否有可能为零。如果存在这种可能,我们就需要处理这种错误。

2.由于存储空间的限制,要防止整数的溢出,导致无法预料的结果。一般的语言都无法捕获这种错误,我们需要对计算的中间结果以及最终结果做出有效的预测防止这种情况的发生。

3.由于float类型是一个幂计算式,所以很多时候并不能表达一个精确值,例如0.1,如果使用float在内存中会被表示为0.10000000000000001,如果进行反复计算将会导致非常大的误差。浮点型不能精确表示所有的实数,所以尽量不要对浮点型使用 "=="操作。例如下面的方法并不会返回true.

public static boolean compareFloatValue(){

float expectedValue = 1.0f;

float realValue =0.0f;

for (int i=0;i<10;i++) {

realValue +=0.1f;

}

return expectedValue==realValue;

}

4.避免数量级相差比较大的数做加减运算。观察下面的Java代码片段,输出的结果是1.0E7。

float larger =10000000.00000f;

float smaller =0.00001f;

System.out.print(larger+smaller);

5.把浮点变量变成整型来避免舍入误差。例如在处理价格问题时,正常的价格都是12.05和100.15等的形式,可以通过乘以一百变成一个整数的形式来存储和计算。

以上转自http://cheryl741.blog.163.com/blog/static/16561854720135403448175/

6、longNum1即使声明为long类型,但是由于没有在数字末尾加上L字符,所以编译器还是以默认的int类型进行存储,longNum2是正确的long类型的声明方式,longNum3由于长度已经超出int类型能够支持的长度,但是又没有在数字末尾加L字符编译器就报错了。

7、最后是三个特殊的浮点数值。

正无穷:Double.POSITIVE_INFINITY;负无穷:Double.NEGATIVE_INFINITY;NaN:Double.NaN;并且判断一个数字是否为NaN也应该采用下面的方式

if(Double.isNaN(Double.NaN)){
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值