2017-02-13 139 views
-2

我有一个整数值列表(正数和负数)。我需要计算每个值的百分比。 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%

+0

目前尚不清楚您要求什么。提供几个输入示例以及每种情况下的预期输出。 –

+0

百分比反映比率95%= 95/100,通常是有限的[0,100]。除非您提供基数或反映相对变化,否定百分比和大于100的值通常没有意义:原始值的120%,变化的-25%等。您能否澄清计算的基础?你想用它达到什么目的? – artdanil

回答

0

我不知道,如果你问正火基于索引排序或VALU后即但我认为基于价值更有意义。例如,如果你的数组是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; 
0

不需要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; 
} 
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