// I got these two examples from the internet.

/* I know this is an 'introduction', but Java Doubles are NOT real numbers!
*  They are _approximations_ of Real numbers!
*  Doubles/Floats should NEVER under any circumstance be used for prices!
*  Watch the movie Office Space for an explanation... or try this code at home:
*/

public class DoubleMath {
	public static void main(String[] args) {
		double maybeOne = .1 * 10;
		System.out.println("Does .1 x 10 = 1 in floating point math?");
		System.out.println(maybeOne == 1);
		System.out.println("Actual Value:" + maybeOne);

		maybeOne = .1 + .1 + .1 + .1 + .1 + .1 + .1 + .1 + .1 + .1;
		System.out.println("How about if we add .1 ten times?");
		System.out.println(maybeOne == 1);
		System.out.println("Actual Value:" + maybeOne);

		test2();
	}

	static void test2() {
		double x = 1234;
		x = x * 0.1;
		x = x * 0.1;
		System.out.println("\nx should be 12.34, but x actually is " +x);
		// a better way is   double x = 1234 / 100;
		//This reduced the number of arithmetic operations on the double, but rounding can still take place.
	}
}

/****************************************
Output:

Does .1 x 10 = 1 in floating point math?
true
Actual Value:1.0
How about if we add .1 ten times?
false
Actual Value:0.9999999999999999

x should be 12.34, but x actually is 12.340000000000002
******************************************/