The aspect ratio is always 1.0 [duplicate] - java

This question already has answers here:
Int division: Why is the result of 1/3 == 0?
(19 answers)
Closed 2 years ago.
This must be pretty basic Java question but I can't get why below program outputs 1.0:
public class Testing {
public static void main(String args[]) {
int width = 1920;
int height = 1080;
double ratio = width / height;
System.out.println("Ratio: " + ratio + "");
}
}
I expect no surprises.

You are doing integer division, and assigning the result to a double. If you want floating point division, at least one of the arguments must be a floating point value (as #Eugene suggests).

Related

not getting required return value [duplicate]

This question already has answers here:
Int division: Why is the result of 1/3 == 0?
(19 answers)
Closed 3 years ago.
if I use double sum=0 instead of int sum=0, I get the expected answer (38.8) but when I use int I get 38.0 as answer. I want to know why is this happening since my return type is double so I should not get automatically accurate decimal value output.
public class prg21
{
public static double average(int...ar)
{
int sum=0;
for(int x:ar)
{
sum+=x;
}
return sum/ar.length;
}
public static void main(String args[])
{
int []arr= {5,77,2,65,45};
System.out.println("Average="+average(arr));
}
}
I expect 38.8 but I get 38.0
int datatype will drop any decimal value
you get 38.0 because the expression is saved into an int, dropping decimals and making it 38, then it's returned as a double so it's converted to 38.0

Eclipse result integer value only [duplicate]

This question already has answers here:
Division operation is giving me the wrong result [duplicate]
(3 answers)
Int division: Why is the result of 1/3 == 0?
(19 answers)
Closed 5 years ago.
Here is my code, Eclipse always return integer value of results, even if h is double. Please help me to fix this.
public static void main(String[] args) {
double h=0.0;
for(int i=1;i<=1000;i++) {
h=h+ 1/i;
}
System.out.println("Harmonic sum "+h);
System.out.println("Harmonic sum "+String.format("%.4f", h));
Result:
Harmonic sum 1.0
Harmonic sum 1,0000
You need to cast the result of your division into double
Try this out:
h=h+ (double)1/i;
I hope this is what you were looking for.

Java - cast not producing expected output [duplicate]

This question already has answers here:
Int division: Why is the result of 1/3 == 0?
(19 answers)
Closed 5 years ago.
public class Test {
public static void main(String[] args) {
int test = 1;
System.out.println((double)(Math.pow(test/++test, 2)));
}
0.0 is printed to the screen. Why? Why is the cast not working as expected?
If test is declared this way...
double test = 1;
I get what I expect to print... 0.25.
Why?
I am new to programming and I'm playing around. Reading some of the documentation at this level is next to useless.
You are doing integer division. SO change the line to
System.out.println((Math.pow(test/(double)++test, 2)));
to do double division

My java program show 0.0 in 15/100 [duplicate]

This question already has answers here:
Int division: Why is the result of 1/3 == 0?
(19 answers)
Closed 6 years ago.
Why does this program show 0.0?.
Below is my code:
class new1{
public static void main (String[]args){
int discount = 15;
float discount1 = 15/100;
System.out.println(discount1);
}
}
In line float discount1 = 15/100; is evaluated using the integer division.
If you want to get expected result, you should write like this
float discount1 = 15.0/100;

Round up when multiplying an integer by 0.5 [duplicate]

This question already has answers here:
Always Round UP a Double
(8 answers)
Closed 7 years ago.
Is there a way to automatically round up a value in java?
For example:
//generate a random integer value
int randomVal = RandomHelper.nextIntFromTo(1, otherVal);
/* then divide the integer value in half... the error I am getting is that its a double, probably
because the number generated isn't an even number, but I NEED it to be an integer. Can I round up?*/
int value = randomVal * 0.5;
You can add 1 then divide by 2 instead of multiplying by 0.5. That way, you avoid a floating point operation followed by a conversion to int.
int value = (randomVal + 1) / 2;
Use Math.ceil():
int value = (int)Math.ceil(randomVal * 0.5);

Categories

Resources