浮点型变量/常量

2-5浮点型数据类型

类型

占用存储空间

表数范围

float

4字节

-3.403E38~3.403E38

double

8字节

-1.798E308~1.798E308

Java浮点类型常量有两种表示形式

  • 十进制数形式,例如:3.14       314.0      0.314 

  • 科学记数法形式,如314e2      314E2      314E-2 

      e2=10的2次方           31400      31400      3.14

 

示例2-11】使用科学记数法给浮点型变量赋值

1
2
double f = 314e2;  //314*10^2-->31400.0
double f2 = 314e-2; //314*10^(-2)-->3.14

        float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。

【示例2-12】float类型赋值时需要添加后缀F/f

1
2
3
float  f = 3.14F;
double d1  = 3.14;
double d2 = 3.14D;

老鸟建议

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

 

示例2-13】浮点数的比较一 

1
2
3
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//结果为false

【示例2-14】浮点数的比较二

1
2
3
4
5
6
7
float d1 = 423432423f;
float d2 = d1+1;
if(d1==d2){
    System.out.println("d1==d2");//输出结果为d1==d2
}else{
     System.out.println("d1!=d2");
}

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

菜鸟雷区

1.不要使用浮点数进行比较!很多新人甚至很多理论不扎实的有工作经验的程序员也会犯这个错误!需要比较请使用BigDecimal类

 

【示例2-15】使用BigDecimal进行浮点数的比较

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.math.BigDecimal;
public class Main {
     public static void main(String[] args) {
         BigDecimal bd = BigDecimal.valueOf(1.0);
         bd = bd.subtract(BigDecimal.valueOf(0.1));
         bd = bd.subtract(BigDecimal.valueOf(0.1));
         bd = bd.subtract(BigDecimal.valueOf(0.1));
         bd = bd.subtract(BigDecimal.valueOf(0.1));
         bd = bd.subtract(BigDecimal.valueOf(0.1));
         System.out.println(bd);//0.5
         System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);//0.5000000000000001
     }
}

转载于:https://www.cnblogs.com/jiaxin2019/p/10502692.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值