Sign in to follow this  
StayFly

Output Question

Recommended Posts

so am doing this exercise from my text book. and my code is as followed 

public class Census{
    public static void main(String[] args){
    
        double population;
        double birth = 86400/7;
        double death = 86400/13;
        double immigrant = 86400/45;
        double total;
        
        total = birth + immigrant - death;
        total = total * 365;
        population = total + 312032486; 
        System.out.println(population);
    }
}

 

My output to the console is 3.14812326E8

 

 When i do this problem step by step on my calculation i get the following output 312040102.7.

 

Why are the numbers so different?

Share this post


Link to post
Share on other sites

Ryan,

 

  In Java, the way you write constants define their types. When you write "86400/7", the compiler understands that the two numbers are integer and the result should be integer also, so instead of getting "12342.85714285714" into "birth" you are getting only "12342".

 

  Try to write your constants differently: instead of 86400, use 86400.0 or 86400d.

 

  Take a look here, in the topic "Floating-point literals".

 

Hope this helps.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this