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

来源:互联网 发布:阿里云实名认证失败 编辑:程序博客网 时间:2024/06/07 09:41
浮点数的注意事项:


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瓶 * 推断开始几个人,每轮剩下几个人 * 205420 * @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要小于afor(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);}}}}}}}

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

未清楚知识点日后补上~




0 0
原创粉丝点击