【问题标题】:Calculate percentage for list of numbers计算数字列表的百分比
【发布时间】:2017-02-13 18:47:51
【问题描述】:

我有一个整数值列表(正数和负数)。我需要计算每个值的百分比。 Java中是否有任何API可以实现这一点?

示例 1 -

10, 40, 60, -15, -25, 30, -10, -50, 120

-50 (lowest value) - 0% -25 - ? -15 - ? -10 - ? 10 - ? 120 (highest value) - 100%

示例 2 -

90、45、13、-89、-95、-150、200、250、67

-150(最低值)- 0% -95 - ? -89 - ? 13 - ? 250(最高值)- 100%

【问题讨论】:

  • 不清楚您的要求。提供几个输入示例,以及每种情况下的预期输出。
  • 百分比反映了 95% = 95/100 的比率,通常受限于 [0, 100]。负百分比和大于 100 的值通常没有意义,除非您提供基数或它反映了相对变化:原始值的 120%、-25% 变化等。您能否澄清计算的基础?你想用它来达到什么目的?

标签: java algorithm math percentage calculus


【解决方案1】:

你不需要API,只需将数字存储在一个数组中,排序,然后得到百分比如下:

int []array = new int[n];
//insert numbers in the list
Arrays.sort();

假设您需要找到给定数字'x' 的百分比,然后这样做:

int index = ArrayUtils.indexOf(array, x);
int percentage = ((double)(index + 1)/n)*100

【讨论】:

    【解决方案2】:

    我不确定您是否要求基于排序后的索引或值进行规范化。但我认为基于价值更有意义。例如,如果您的数组是0, 1, 10,则最终百分比将为0->0%, 1->10%, 10->100%

    为此,您基本上会进行标准化。

    我不记得确切的语法,但如果有任何语法错误,请纠正它。

    int arr[] = {10, 40, 60, -15, -25, 30, -10, -50};
    
    List b = Arrays.asList(ArrayUtils.toObject(arr));
    
    int mn = Collections.min(b);
    int mx = Collections.max(b);
    
    int perc_arr = new int[arr.length];
    for(int i = 0; i < arr.length; i++)
         perc_arr[i] = (arr[i]-mn)/(mx-mn)*100;
    

    【讨论】:

      【解决方案3】:

      不需要 API / 外部类。你可以做一个方法。这是一些基本的伪代码-esk java,可以帮助您入门

      public int average (arraylist a or int[] a){
          int r = 0;
          for (int i = 0; i< a.length or a.size(); i++){
              r+= a[i] or r+= a.get(i);
          }
          r = (r/a.length) or (r/a.size());
          return r;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-02
        • 1970-01-01
        • 2013-12-27
        • 2022-06-23
        • 2010-10-13
        • 2017-08-14
        • 2022-11-15
        相关资源
        最近更新 更多