-1
votes

Diviser deux entiers et arrondir le résultat de l'entier le plus proche

J'ai deux chiffres INT A, B toujours> = 0. Je veux diviser A par B et renvoyer le pourcentage arrondi sur l'entier le plus proche.

Exemple: 18/38 devrait renvoyer 47 et 13/38 Retour 34.

Comment puis-je accomplir cela?

J'ai essayé ce qui suit, mais cela n'a pas fonctionné xxx


1 commentaires

A / B est une division entière. Vous devez lancer au moins un des opérandes à un double pour avoir une double division.


4 Réponses :


3
votes

Etant donné que a et b sont des entiers, a / b utiliseront Division entier et renvoie uniquement la partie" entière "du résultat. Au lieu de cela, vous devriez multiplier A par 100.0 (notez le .0 , ce qui en fait un double littéral!) utiliser la division de points flottants, puis CEIL le résultat et tronquez-le à un int : xxx


4 commentaires

c = (int) math.round (100.0 * A / B); donnera 47 qui est destiné à


Merci pour votre réponse! Je reçois 18/38 = 45 et 13/38 = 35 pour une raison quelconque?


@Bigmon le texte de votre question et l'exemple que vous avez donné contredit mutuellement. E.G. 13/38 est d'environ 34,21% - si vous souhaitez l'arrondir comme le texte indique que vous obtiendrez 35, que le code revient; Si vous voulez obtenir 34 qui seraient arrondi et que vous devriez utiliser plancher au lieu de ceil - ou, bien sûr, vous pouvez simplement utiliser rond pour obtenir l'entier le plus proche.


@Murinik C'est mon mauvais, j'ai changé le plafond pour tourner comme vous l'avez dit et il semble fonctionner comme je le veux.



0
votes
c = (int) Math.round(100.0 * a / b);
This should give desired result.

2 commentaires

MATH.FLOOR TOUJOURS TOUT TOUJOURS MIEUX POUR UTILISER MATH.ROND .


Correct, mon mauvais.



0
votes

Vous devez suivre les choses pour obtenir le résultat xxx

merci


0 commentaires

0
votes
public static void main(String[] args){
int a=18,b=38,c=0;
c = (int) Math.round(100.0 * a / b);    
System.out.println(c);
}
As @Mureinik said that a and b are integers,they will use integer division.
you should multiply 100 by a like above. and keep using .round instead of .ceil inorder to get 47 as output which is intended .ceil will give you 48 as output.

0 commentaires