Java基础之浮点型变量和BigDecimal的使用

带小数的数据在Java中称为浮点型,浮点型可以分为float类型和double类型。

类型

占用存储空间

表数范围

float

4字节

-3.403E38~3.403E38

double

8字节

-1.798E308~1.798E308

float类型又被称为单精度类型,尾数可以精确到7位有效数字,在很多情况下float类型的精度很难满足需求。而double表示这种类型的数值约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。浮点类型常量默认类型也是double。

 

 

Java浮点类型常量的两种表现形式


  • 十进制数形式,例如:3.14 314.0 0.314
  • 科学记数法形式,如:314e2 314E2 314E-2

上面的科学记数法形式,e2表示10的2次方,也就是314乘10的2次方。而E-2表示10的-2次方,即314乘10的-2次方。

 

 

使用科学记数法个浮点型变量赋值


double f1=314e2;	//314*10^2 --> 31400.0
double f2=314e-2;	//314*10^(-2) --> 3.14
float f3=3.3f;

float类型的数值有一个后缀F或者f,如果没有的话,则默认为double类型,也可以在浮点数值后面直接添加D或者d,以明确其为double类型。同时注意,为float类型数据赋值时,要加上后缀F或者f

 

 

浮点数不要用于比较


float a1=0.1f;
double a2=1.0/10;
System.out.println(a1==a2);  //输出结果为false
float a1=0.1f;
double a2=1.0/10;
System.out.println(a1==a2);  //输出结果为false

浮点数是不精确的,因此一点不要用于比较!

 

 

使用BigDecimal进行浮点数的比较


浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生误差的精确数字计算,需要使用BigDecimal类。

在java.math包下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点数运算。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值