蓝桥杯常用算法知识点:2.浮点数的注意事项

浮点数的注意事项:


1.要注意浮点数不能用于精确的求等:


package com.aiqiongdiao;
/**
 * 啤酒:2.3
 * 饮料:1.9
 * 共花:82.3
 * 饮料<啤酒
 * 买的多少啤酒?
 * @author lyb
 *
 */
public class Main {
public static void main(String[] args){
	/**
	 * 浮点全等:有风险		System.out.println(0.2+0.1==0.3);【Flase:二进制的问题】
	 * 		解决方式!!:	方式一:	System.out.println(Math.abs(0.2+0.1-0.3)<1E-10);
	 *						方式二:	if(a*23+b*19==823)
	 */


	for(int a=0;a<100;a++){
		for(int b=0;b<100;b++){
//			if(a*2.3+b*1.9==82.3){
			if(Math.abs(a*2.3+b*1.9-82.3)<1E-10){
				System.out.println(a+" "+b);
			}
		}
	}
}	
}


===========================================================================
2.海盗喝酒
package com.aiqiongdiao;
/**
 * 20个人或以内在喝酒
 * 开一瓶平分,倒下几个
 * 第4瓶后船长也倒下
 * 船长喝了1瓶
 * 推断开始几个人,每轮剩下几个人
 * 20	5	4	2	0
 * @author lyb
 *
 */
public class Main {
public static void main(String[] args) {
/**分数不能用在浮点数精确的比较
 * 所以用:
 * 	1.相减值太小
 * 	2.化去分母
 */
		//剩下的人数
		for(int a=20;a>1;a--){
			for(int b=a-1;b>1;b--){    //b要小于a
				for(int c=b-1;c>1;c--){
					for(int d=c-1;d>1;d--){
						//注意部分:此处分数不能精确相等--改写成整数相乘
						if(b*c*d+a*c*d+a*b*d+a*b*c==a*b*c*d){
							System.out.println(a+","+b+","+c+","+d);
						}
					}
				}
			}
		}
	}
}

===============================

未清楚知识点日后补上~




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值