java基础知识随笔--类

Java浮点数运算与精度问题详解
本文深入探讨了Java中浮点数运算的精度问题,包括构造函数的使用、浮点数相等判断、基本类型自动装箱与拆箱、以及避免直接比较浮点数运算结果的方法。通过实例分析了浮点数表示原理和如何使用BigDecimal类来提高精度。

1、java的类的构造函数没有返回类型,但是前面可以有public,也可以没有public。

2、java中1.0-0.8的结果不是0.2

 

		double a = 0.1;
		double b = 0.1;
		double c  = 0.1;
		if((a + b + c == 0.3)){
		    System.out.println("等于0.3");
		 }
		else{
			System.out.println("不等于0.3");
		}
结果不是0.3。因为java中使用分数与指数来表示浮点数。例如用1/2来表示0.5,1/2+1/4来表示0.75等。而0.1使用的是1/16+1/32+1/256+1/512.......来表示,无法精确表示。如果想要精度很高,就不要用==直接比较浮点数运算结果。

 保证精度的方法:使用java.math.BigDecimal类:

                BigDecimal aBigDecimal = new BigDecimal("1.0");
		BigDecimal bBigDecimal = new BigDecimal("1.0");
		BigDecimal cBigDecimal = new BigDecimal("1.0");
		BigDecimal dBigDecimal = new BigDecimal("3.0");
		System.out.println(dBigDecimal.equals(aBigDecimal.add(bBigDecimal).add(cBigDecimal)));

3、基本类型long、int、double、float、 boolean等,在j2se5.0之前必须亲自使用Long、Integer、Double、Float、Boolean等类打包为对象,才能当对象来使用。5.0之后就开始支持自动装箱(Autoboxing)、拆箱(unboxing)。int data1 = 10; Integer wrapper1 = new Integer(data1);就是一个打包的过程,将一个整型变量编程一个对象。Integer提供compareTo()方法,可与另一个Integer对象进行比较,如果打包值相同就返回0,小于传入对象返回-1,否则就是1。

4、

		Float float5 = new Float(0.3);
		Float float6 = new Float(0.3);
		
		if(float5.equals(float6)){
			System.out.println(true);
		}
输出值是true。

		Float float5 = new Float(0.3);
		Float float6 = new Float(0.3);
		
		if(float5.equals(0.3)){
			System.out.println(true);
		}
没有输出值。因为0.3是一个不确定的值。

5、

		Integer a = 10;
		int foo = a;
上面为自动装箱、拆箱的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值