Solving A math equation using Java [duplicate] - java

This question already has answers here:
Why does division result in zero instead of a decimal?
(5 answers)
Closed 8 years ago.
I have hit a snag in my program when this calculates I get result of 0.0
y = 1/6*Math.pow(x,3)+1/2*Math.pow(x,2)-1/3*x;
I have tried writing the equation in chunks so I can add the results up after calculation but the result just keeps ending up being 0.0 and I don't know why. Is this a syntactical error or is there a rule that I'm missing about java?.

When you divide two integers Java truncates the result to an integer. If you want a fractional result you need to use floating point numbers. 1/2 is 0; 1.0/2.0 is 0.5.
y = 1.0/6.0*Math.pow(x,3) + 1.0/2.0*Math.pow(x,2) - 1.0/3.0*x;

y = 1/6*Math.pow(x,3)+1/2*Math.pow(x,2)-1/3*x;
Here you are doing division of two integers, which would result in 0. Make one/both of the values to decimal (1.0/6.0 etc) and then try this. It should give the correct result. The reason is that, 1/6 will be corrected to the closest integer value, which is 0.

Related

How to round off fractional part in java [duplicate]

This question already has answers here:
How to round a number to n decimal places in Java
(39 answers)
Closed 7 years ago.
I have to divide 495/116533, i tried using long and double; but it's returning 0.0;
Once if i able to capture that value (0.004247) then i can use round of methods;
Please help me how to capture complete value( which data type it supports?)
For 4 decimals do:
(double) (Math.round(value * 10000) / 10000)
The number of zeroes is how many decimals you want to round to.
Essentially what you need to do is to first multiply your number by a factor of X so that only the section you want to show is in front of the decimal place, then you can round it using the Math.round function. After that, just divide it back by X in order to put the decimal back in the right spot.

How can I compute the average of an int array in a print statement? (java) [duplicate]

This question already has answers here:
How to make the division of 2 ints produce a float instead of another int?
(9 answers)
Closed 7 years ago.
This is my array c:
[-33,-22,-11,-5,-4,-3,-2,-1,6,7,8,9,10,11,44,55,66,77,88]
I was able to find the sum by doing this and it worked:
System.out.println(Arrays.stream(c).sum()));
I tried a similar approach to get the average:
System.out.printf("%.2f",(Arrays.stream(c).sum()/c.length));
I got an IllegalFormatConversionException for that though.
When I manually do the average on a calculator, it should come out to 15.78947...but I only want to round 2 places after the decimal. I have tried other statements but those kept giving be 15 as the average and cutting the decimals off. I need to compute the average within the print statement. How can I do this?
I want my output to look like this: 15.79
double average = Arrays.stream(numbers).average().getAsDouble();
This should do the trick.
Arrays.stream(c).sum()/c.length is integer since both arguments are integer.
So you are trying to format Integer as float.
You need explicitly cast one of arguments to float (or double) to get decimal result.
Something like
Arrays.stream(c).sum()/(double)c.length

Trouble with math in java [duplicate]

This question already has answers here:
Division of integers in Java [duplicate]
(7 answers)
Closed 8 years ago.
It's been a long day for me and I don't know if I can't do second grade math or if I'm doing something wrong in terms of how to do math in java. I'm not new to java, I started about a year and a half ago, but like I said, it's been a long day.
Here is my code:
System.out.println(5 / 150 * 100);
I expect to get something like "3.3333" or at least "3", but I get "0" instead. Why is that and how do I fix it?
Your second grade math is perfectly correct. However, 5 / 150 = 0.03 will become zero because its type is int. Then multiplying 0 with 100 won't change anything.
Use floats or doubles and you'll get the right result. Which of these two you use, depends on your needs. If you need a very precise value (a freaking lot of 3s behind the point) use double because it has - as its name tells you - two times the precision of a float.
All of your operand is int value and it will result in int value.
Try to change your operand to float value.
Try this:
System.out.println(5f / 150 * 100);
System.out.println(5 / 150f * 100);

The difference made by ".0" in double calculation [duplicate]

This question already has answers here:
Why does the division of two integers return 0.0 in Java? [duplicate]
(6 answers)
Closed 8 years ago.
In the calculation of double numbers, what's the difference between, say, 6.0 and 6?
Because when I was solving a problem on online judge, the expression
estimatedPI = Math.sqrt(6*a/b);
got "Wrong answer" on OJ, while
estimatedPI = Math.sqrt(6.0*a/b);
got "Accepted" on OJ.
For the output, because I used
String result;
result = String.format("%.6f\n",estimatedPI);
System.out.print(result);
so the output looks exactly the same, with six digits after decimal point.
The estimatedPI is declared double and a,b declared int.
So why 6.0 got "Accepted" and 6 got "Wrong answer"? What would be the difference here?
Thanks.
Edit: Noted of duplicated questions.
6.0 is a double. 6 is an int.
If a and b are also ints, then 6*a/b is not a "double calculation" - it will be done using int arithmetic.
When you mix doubles and ints in a binary mathematical operation, the int is converted to a double and then the operation is done using double arithmetic. So 6.0*a does a double multiplication (converting a to double first), resulting in a double. Then (the result of that)/b also does a double division (converting b to double first).
The .0 is an indicator to the compiler that the constant is a floating point number rather than an integer. Your expression 6 * a / b will be treated as an integer expression.

Why does this Java division print out zero? [duplicate]

This question already has answers here:
Division of integers in Java [duplicate]
(7 answers)
Closed 9 years ago.
I have the following line of code:
System.out.println(5/9);
I expect to see 0.555 as a result, but instead it prints out zero. Can someone help me understand why this happens? I am currently learning programming and appreciate the help.
Thanks!
This happens because what you are unknowingly doing is Integer Division.
To make calculations fast, computer uses Integer division method when there's no decimal number involved, and hence decimal values are lost.
Try this out:
System.out.println(5.0 / 9.0);
or
System.out.println(5.0 / 9);
or
System.out.println(5 / 9.0);
or
System.out.println((float) 5 / 9);
or
System.out.println(5 / (float) 9);
You trying to divide 5 by 9.Both are integers.So the answer is also an integer.So return 0 as answer.So try like System.out.println(5.0/9); or assign values to float variables and go with that
Integer divide by Integer returns Integer
Do like this
System.out.println(5.0/9);
This is an integer division because both operands are of type integer. An integer division gives an integer result obtained by truncation.
When Integer division is ran in Java (Integer / Integer), the number is calculated then rounded down to the while number. Therefore, 5/9 is evaluated as 0.55555 then rounded down to 0.

Categories

Resources