蓝桥杯常用算法知识点:2.浮点数的注意事项
2016-03-09 17:21
134 查看
浮点数的注意事项:
1.要注意浮点数不能用于精确的求等:
===========================================================================
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); } } } } } } }
===============================
未清楚知识点日后补上~
相关文章推荐
- Tomcat启动过程原理详解
- Imageloader图片加载在实际开发中的使用
- 蓝桥杯:阶乘计算
- 记一次用pyCharm在 virtualEnv中 创建django项目
- [POJ1088] 滑雪(递归dp)
- iOS 【UIKit-UIImageView 的 contentMode 属性概述】
- Linux环境下实现SSH远程管理
- 2016年3月7日作业
- 九度-题目1432:叠筐
- [zz]如何在C语言程序中处理汉字
- 位运算
- 【Unity开发】NGUI动态刷新ScrollView
- 深入浅出RxJava(一:基础篇)
- django定义Model中的方法和属性
- ASP Girdview通过ButtonField获取行号与主键
- ytu 2392: 求各位数字之和
- hrbust 哈理工oj 2179 组合【基础dfs过】
- 【error】jQuery.ajax()报错Uncaught SyntaxError: Unexpected token
- [置顶] unity调用外部摄像头
- html5 页面嵌入视频