2015-01-03 3 views
-1

У меня есть следующий код, чтобы взять процент от «набора», и, например, если введено 60%, он содержит только 9 примеров «набора». Тем не менее, мне нужно изменить это, как если бы> 0,5 I округляли число, но если это < 0.5, я округляю его. Например, 9.6 хранит первые 10 учебных примеров, в то время как 9.4 хранит первые 9 примеров.Процент вектора округления вверх или вниз и целочисленного деления

public void proportion(int percentage) 
{ 
    int noOfEx = percentage*set.size()/100; 
    root.keptEx = new Vector(set.subList(0, noOfEx)); 
} 

Я пытался сделать

public void proportion(int percentage) 
{ 
    double noOfEx = percentage*set.size()/100; 
    int rounded = (int)Math.round(noOfEx); 
    root.keptEx = new Vector(set.subList(0, rounded)); 
    System.out.println(noOfEx); 
} 

но если set.size 16 я все еще получаю 9 в то время как мне нужно 10

+0

https: // www.google.co.uk/webhp?#q=java%20round%20to%20the%20nearest%20integer – NPE

+0

да, но мне нужно округлить вверх и вниз в то же время – user4345738

+1

Во-первых, используйте double для noOfEx: 'double noOfEx = percent * set.size()/100.0; 'Затем используйте Math.round() для округления, которое вы ищете:' root.keptEx = new Vector (set.subList (0, Math.round (noOfEx)) ; ' –

ответ

0

Использование Math.round:

double number = 22.5; 
int rounded = (int)Math.round(number); 

DEMO

+0

Я сделал double noOfEx = Math.round (percent * set.size()/100); но тогда я не могу использовать subList, так как я получаю сообщение об ошибке, что не найдено подходящего метода для subList (int, double). – user4345738

+0

@ user4345738 Внимательно прочитайте ответ. С округленным результатом является int, и вы должны использовать его вместо double. – BackSlash

+0

см. Обновление – user4345738

Смежные вопросы