Question

public class test {
  public static void main(String[] args) {
   int total = 2;
   int rn = 1;
   double rnp = (rn / total) * 100;
   System.out.println(rnp);
 }
}

Why it prints 0.0 instead of 50.0?

https://www.google.com/search?q=100*(1%2F2)&aq=f&oq=100*(1%2F2)

Était-ce utile?

La solution

The division occurs in integer space with no notion of fractions, you need something like

double rnp = (rn / (double) total) * 100

Autres conseils

You are invoking integer division here

(rn / total)

Integer division rounds towards zero.

Try this instead:

double rnp = ((double)rn / total) * 100;

In java, and most other programming languages, when you divide two integers, the result is also an integer. The remainder is discarded. Thus, 1 / 2 returns 0. If you want a float or double value returned, you need to do something like 1 * 1.0 / 2, which will return 0.5. Multiplying or dividing an integer by a double or float converts it to that format.

public class test
{
  public static void main(String[] args) 
  {
   int total = 2;
   int rn = 1;
   double rnp = (rn / (float)total) * 100;
   System.out.println(rnp);
 }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top