web-dev-qa-db-fra.com

Java: arrondir au multiple de 5 le plus proche (vers le haut ou vers le bas)

Je dois arrondir un nombre au multiple de 5 le plus proche (soit vers le haut ou le bas) Par exemple, voici la liste des nombres et le numéro à côté duquel il faut arrondir.

12.5  10
62.1  60
68.3  70
74.5  75
80.7  80

Les chiffres ne seront que positifs.

42
AndroidDev

je ne l'ai pas testé, mais 5*(Math.round(f/5)); devrait fonctionner

74
gefei

Le plus proche multiple de 5 .__ pour la valeur supérieure

5*(Math.ceil(Math.abs(number/5)));

pour valeur inférieure

5*(Math.floor(Math.abs(number/5)));

cela donne seulement une valeur positive.

29
Rajesh Sampath
public static void main(String args[]) {
    double num = 67.5;
    if (num % 5 == 0)
        System.out.println("OK");
    else if (num % 5 < 2.5)
        num = num - num % 5;
    else
        num = num + (5 - num % 5);
    System.out.println(num);

}

Essaye ça. 

5
Achintya Jha

La solution de Gefei fonctionne, mais je devais convertir explicitement pour doubler comme ceci: 5*(Math.round((double)f/5))

4
Máté Pintér

Que diriez-vous quelque chose comme ça:

return round((number/5))*5;
3
koljaTM

Il y a beaucoup d'autres solutions sur cette page, mais je pense que c'est la plus concise. 

Pour trouver le multiple le plus proche de x pour un nombre donné, 

soit x le multiple et num le nombre donné: 

// The closest multiple of x <= num
int multipleOfX = x * ( num / x );

Dans ton cas:

int multipleOf5 = 5 * ( num / 5 );
0
IShaan