double multiply()
{
double x=(2/3)*3.14*1.02;
System.out.print(x);
double y=0.666*3.14*1.02; /*(2/3)=0.666...*/
System.out.print(y);
}
Output: x=0.0 y=SomeNumber
please explain this?
double multiply()
{
double x=(2/3)*3.14*1.02;
System.out.print(x);
double y=0.666*3.14*1.02; /*(2/3)=0.666...*/
System.out.print(y);
}
Output: x=0.0 y=SomeNumber
please explain this?
(2/3) is 0.
because both are integers. To solve this, use a cast or make it clear that your number is not an integer:
double x=(2/3d)*3.14*1.02;
Now you have an integer divided by a double, which results in a double.
Some more to read about this: http://www.mathcs.emory.edu/~cheung/Courses/170/Syllabus/04/mixed.html
(2/3) is computed first (because of the parentheses), and in integer arithmetic (since the number literals are of type int). The fractional part is discarded.
It is therefore an int type with a value of 0. The entire expression is therefore zero.
The obvious remedy is to remove the parentheses and write 2.0 / 3.0 instead. Some folk prefer an explicit cast, but I find that ugly.
2/3 = 0 because they don't have explicit cast to double they are integers. The whole expression becomes: double x=0*3.14*1.02;
which is 0.
because data type of both 2 and 3 is int and int/int gives you int which in your case 2/3 is 0. Try using 2.0/3 or 2/3.0 you will get the required answer.