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)

Was it helpful?

Solution

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

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

OTHER TIPS

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);
 }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top