您的位置:首页 > 其它

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

2016-03-09 17:21 134 查看
浮点数的注意事项:

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);
}
}
}
}
}
}
}

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

未清楚知识点日后补上~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: