从1-20中找到距离0.618最近的分子和分母

  int  denominator= 20;   //分母
  double j = 1;
  int numerator = 1; //分子
  double[] result = new double[21];
  int[] numerator_result = new int[21];
  while(denominator!=0){
   //分母范围1~20,每个分母乘0.618,向上取整,向下取整,求距离0.618最近的分子值和距离,分别存入数组
   j = denominator*0.618;
   System.out.println("j:"+j);
      //向上取整 向下取整
      if(Math.ceil(j)-j > j-Math.floor(j)){
       result[denominator]= j-Math.floor(j);
                numerator_result[denominator]= (int)Math.floor(j);
      }else{
       result[denominator]= Math.ceil(j)-j;
       numerator_result[denominator]= (int)Math.ceil(j);
      }
      System.out.println("result["+denominator+"]:"+result[denominator]);
      denominator--;
  }
  double result_final=20;
  int denominator_final=0;
  int i=0;
  //从距离结果中查找最小结果,及对应的分母值,再查找以分母值为下标对应的分子值
  for(i=1;i<20;i++){
   if(result[i]< result_final){
    result_final= result[i];
    denominator_final = i;
   }
  }
     System.out.println("分母是:"+denominator_final);
     System.out.println("分子是:"+numerator_result[denominator_final]);
     System.out.println("最接近0.618的值为:"+result_final);
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值