Basic fundas about using float or double

Think again if you are going to use float or double for amount/currency field.

Reason behind this is

Floats have a fixed number of total bits of precision, which must be shared among the integer and fractional parts. If you use more of those bits to store a larger integer portion (123456 vs. just 12), that leaves fewer for the fractional portion (.4 vs. .45678).

Also, you should be aware that since float and double are base-2 formats, rather than base-10, many values that can be represented with a small, finite number of digits in base-10 cannot be stored in a double or float. For instance, it is impossible to store exactly 1/10 (0.1) in a double or float, just as it’s impossible to store 1/3 (0.333…) exactly in a finite number of digits in base-10.

Demonstration code:

    public static void main(String args[]) {  
double d = 1997500.43;
String s = "1997500.43";
float f = (float) d;

float f3 = Float.parseFloat(s);

float f4 = Double.valueOf(s).floatValue();

float f5 = new Double(s).floatValue();

float xFloat;
Double x = new Double("63.8644951");
xFloat = x.floatValue();
System.out.println(xFloat);// 63.864494

float xFloat2;
Double x2 = new Double("3333263.8644951");
xFloat2 = x2.floatValue();
System.out.println(xFloat2);// 3333263.8

Detailed information about floats and doubles is available at :

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.