单双精度浮点数float 和 double

本文探讨了在处理浮点数运算时,由于CPU处理单精度浮点数的速度优势及浮点数无法完全精确表示的特性,导致的精度损失问题。通过示例展示了不同参数类型调用函数的影响,并说明了如何正确使用float类型以及浮点数运算中可能出现的精度误差。

有以下两个不同参数类型的函数

	static double f(double x, float y){
		return x+y;
	}
	static double f(float x, float y){
		return x*y;
	}

当调用时

一般来说,CPU处理单精度浮点数float的速度比处理双精度浮点数double快

System.out.println(f(10,10));		//100.0
System.out.println(f(10f,10));		//100.0
System.out.println(f(10.0,10));		//20.0
System.out.println(f(10.0,10f));	//20.0

因为如果不声明,默认小数为double类型,所以如果要用float的话,必须进行强转

dx

//浮点数不能完全精确的表示出来,一般会损失精度
System.out.println(3*0.1);				//0.30000000000000004
System.out.println(3*0.1 == 0.3);		//false;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值