java计算值所占的百分比,结果为100%问题

 更新时间:2022年11月23日 10:23:13   作者:爱尚西柚  
这篇文章主要介绍了java计算值所占的百分比,结果为100%问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java计算值所占的百分比

public static double[] getPercentValue(int[] arr){
        //求和
		double sum = 0;
        if(sum <= 0){
            for (int i = 0; i < arr.length; i++) {
                sum += arr[i];
            }
        }
        //10的2次幂是100,用于计算精度。
        double digits = 1;
        //扩大比例100
        double[] votesPerQuota = new double[arr.length];
        for(int i = 0; i < arr.length; i++){
            double val = arr[i] / sum * digits * 100;
            votesPerQuota[i] = val;
        }
        //总数,扩大比例意味的总数要扩大
        double targetSeats = digits * 100;
        //再向下取值,组成数组
        double[] seats = new double[arr.length];
        for(int i = 0; i < votesPerQuota.length; i++){
            seats[i] = Math.floor(votesPerQuota[i]);
        }
        //再新计算合计,用于判断与总数量是否相同,相同则占比会100%
        double currentSum = 0;
        for (int i = 0; i < seats.length; i++) { 
            currentSum += seats[i];
        }
        //余数部分的数组:原先数组减去向下取值的数组,得到余数部分的数组
        double[] remainder = new double[arr.length];
        for(int i = 0; i < seats.length; i++){
            remainder[i] = votesPerQuota[i] - seats[i];
        }
        while(currentSum < targetSeats){
            double max = 0;
            int maxId = 0;
            for(int i = 0;i < remainder.length;++i){
                if(remainder[i] > max){
                    max = remainder[i];
                    maxId = i;
                }
            }
            //对最大项余额加1
            ++seats[maxId];
            //已经增加最大余数加1,则下次判断就可以不需要再判断这个余额数。
            remainder[maxId] = 0;
            //总的也要加1,为了判断是否总数是否相同,跳出循环。
            ++currentSum;
        }
        // 这时候的seats就会总数占比会100%
        return seats;
    }

求两个数的百分比%

Java求百分比%

	/**
     * 用于求百分比方法,已考虑除数不为0的情况
     * @param number1 除数
     * @param number2 被除数
     * @param formatNumber 保留几位小数
     * @return 百分比%
     */
    public static double getPercentage(double number1,double number2,int formatNumber) {
        double number100;
        if(number1!=0 && number2!=0){
            double numberA= number1 /number2 *100;//到报率求%
            number100= new BigDecimal(numberA).setScale(formatNumber, BigDecimal.ROUND_HALF_UP).doubleValue();//四舍五入保留2位小数
            return number100;
        }else{
            number100=0.0;
            return number100;
        }
    }
    
	 //使用该方法
	double testNumber=getPercentage(2,10,2);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈java Collection中的排序问题

    浅谈java Collection中的排序问题

    下面小编就为大家带来一篇浅谈java Collection中的排序问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Springboot如何集成websocket

    Springboot如何集成websocket

    这篇文章主要介绍了Springboot如何集成websocket问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Netty分布式客户端处理接入事件handle源码解析

    Netty分布式客户端处理接入事件handle源码解析

    这篇文章主要为大家介绍了Netty源码分析客户端流程处理接入事件handle创建,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • Java递归方法实现山脉绘制

    Java递归方法实现山脉绘制

    这篇文章主要为大家详细介绍了Java递归方法实现山脉绘制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Java操作MongoDB模糊查询和分页查询

    Java操作MongoDB模糊查询和分页查询

    这篇文章主要介绍了Java操作MongoDB模糊查询和分页查询的相关资料,需要的朋友可以参考下
    2016-04-04
  • java接口类中的@selectProvider接口的使用及说明

    java接口类中的@selectProvider接口的使用及说明

    这篇文章主要介绍了java接口类中的@selectProvider接口的使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 使用mongoTemplate实现多条件加分组查询方式

    使用mongoTemplate实现多条件加分组查询方式

    这篇文章主要介绍了使用mongoTemplate实现多条件加分组查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java Servlet请求重定向的方法

    Java Servlet请求重定向的方法

    这篇文章主要介绍了使用Java Servlet请求重定向的方法,帮助大家更好的理解和学习Java Servlet的相关知识,感兴趣的朋友可以了解下
    2020-11-11
  • 详解Java如何实现自定义注解

    详解Java如何实现自定义注解

    注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。本文将通过示例详解Java如何实现自定义注解,需要的可以参考一下
    2022-06-06
  • 详解Spring 中 Bean 的生命周期

    详解Spring 中 Bean 的生命周期

    这篇文章主要介绍了Spring 中 Bean 的生命周期的相关资料,帮助大家更好的理解和使用spring框架,感兴趣的朋友可以了解下。
    2021-01-01

最新评论