Hello.
An app I had to make for calculating sphere`s volume and surface area.
The code didn`t give the correct result for volume until I cast converted it`s value by adding (double), but it is a double from the beginning(?!):
Can someone explain please.
An app I had to make for calculating sphere`s volume and surface area.
The code didn`t give the correct result for volume until I cast converted it`s value by adding (double), but it is a double from the beginning(?!):
Code:
import java.util.Scanner;
import java.text.DecimalFormat;
public class Sphere
{
public static void main (String[] args)
{
Scanner scan = new Scanner (System.in);
double radius, volume, surfaceArea, val;
System.out.print ("Please enter sphere radius : ");
radius = scan.nextDouble();
volume = (double) 4/3 * Math.PI * Math.pow (radius, 3); // [u]Lack of (double) conversion gave the result of:
// 4/3 = 1 because of automatic integer conversion? and not 1.333333333333333[/u]
surfaceArea = 4 * Math.PI * Math.pow (radius, 2);
val = 4/3; [u]//example of result in a double value converted to integer[/u]
DecimalFormat fmt = new DecimalFormat ("0.####");
System.out.println ("Sphere volume : " + fmt.format(volume));
System.out.println ("Sphere surface area : " + fmt.format(surfaceArea));
System.out.println ("4/3 = : " + val); [u]//example of result in a double value converted to integer - Printed[/u]
}
}
// result of val = 4/3; is 1, not 1.333333333333333 but it`s a double.
Can someone explain please.