If you have a number with digits to the right of the decimal point, you can store it in a float or a double variable. However, if you try to assign it directly, it doesn't work:
UBUNTU > cat prog12.java
public class prog12
{
public static void main (String args[])
{
float f1 = 1/5;
double d1 = 1/5;
System.out.println ("f1 = " + f1);
System.out.println ("d1 = " + d1);
}
}
UBUNTU > javac prog12.java
UBUNTU > java prog12
f1 = 0.0
d1 = 0.0
UBUNTU >
You can add an f (or F) at
the end of the number before assigning it to a float variable and you
can add a d (or D) at the end before assigning it to a double. Notice how the double has greater precision:
UBUNTU > cat prog13.java
public class prog13
{
public static void main (String args[])
{
float f2 = 1/7f;
double d2 = 1/7d;
System.out.println ("f2 = " + f2);
System.out.println ("d2 = " + d2);
f2 = 1/9F;
d2 = 1/9D;
System.out.println ("f2 = " + f2);
System.out.println ("d2 = " + d2);
}
}
UBUNTU > javac prog13.java
UBUNTU > java prog13
f2 = 0.14285715
d2 = 0.14285714285714285
f2 = 0.11111111
d2 = 0.1111111111111111
UBUNTU >
Alternatively, you can add (float) before a float variable or (double) before a double. This is called casting:
UBUNTU > cat prog14.java
public class prog14
{
public static void main (String args[])
{
float f3 = (float) 1/13;
double d3 = (double) 1/13;
System.out.println ("f3 = " + f3);
System.out.println ("d3 = " + d3);
}
}
UBUNTU > javac prog14.java
UBUNTU > java prog14
f3 = 0.07692308
d3 = 0.07692307692307693
UBUNTU >
As well as giving greater precision, a double can also store much larger numbers than a float:
UBUNTU > cat prog15.java
public class prog15
{
public static void main (String args[])
{
System.out.println
("Largest float = " + Float.MAX_VALUE);
System.out.println
("Largest double = " + Double.MAX_VALUE);
}
}
UBUNTU > javac prog15.java
UBUNTU > java prog15
Largest float = 3.4028235E38
Largest double = 1.7976931348623157E308
UBUNTU >
If you have a Java book on Amazon, which you would like to advertise here for free, please write to me at international_dba@yahoo.co.uk.