Computer Science 15-110, Spring 2010
Class Notes:  Data and Expressions (2 of 3)


  1. double values
    1. Print a floating-point value
    2. Use "double" variables
    3. Integer vs Floating-point division
    4. Approximate values of floating-point numbers
    5. "almost equal" comparison of doubles
    6. Some double Math methods (abs, min, max, pow, sqrt)
    7. Even more Math methods (signum and round)

Data and Expressions (2 of 3)

  1. double values
     
    1. Print a floating-point value
      class MyCode {
        public static void main(String[] args) {
          System.out.println(1.2);
        }
      }
    2. Use "double" variables
      class MyCode {
        public static void main(String[] args) {
          double x = 1.2;
          System.out.println(2*x);
        }
      }
    3. Integer vs Floating-point division
      class MyCode {
        public static void main(String[] args) {
          int i = 10;
          double d = 10.0;
          System.out.println( 10 / 3 );
          System.out.println(  i / 3 );
          System.out.println(  d / 3 );
          System.out.println( 10 / 3.0 );
          System.out.println(  i / 3.0 );
        }
      }
    4. Approximate values of floating-point numbers
      class MyCode {
        public static void main(String[] args) {
          double d1 = (29.0 / 7.0) * 7.0;
          double d2 = 29.0;
          System.out.println(d1 == d2); // false!
          System.out.println(d2 - d1);  // -3.552713678800501E-15  (tiny!)
        }
      }
    5. "almost equal" comparison of doubles
      class MyCode {
        public static void main(String[] args) {
          double d1 = (29.0 / 7.0) * 7.0;
          double d2 = 29.0;
          System.out.println(d1 == d2); // still false (of course)
      
          // now compare if their difference is very small...
          double epsilon = 0.000001;
          System.out.println(Math.abs(d2 - d1) < epsilon); // true!
        }
      }
    6. Some double Math methods (abs, min, max, pow, sqrt)
      class MyCode {
        public static void main(String[] args) {
          System.out.println(Math.abs(4.2));   // 4.2
          System.out.println(Math.abs(-4.2));  // 4.2
      
          System.out.println(Math.min(3.5, 2.5)); // 2.5
          System.out.println(Math.min(2.5, 3.5)); // 2.5
      
          System.out.println(Math.max(3.5, 2.5)); // 3.5
          System.out.println(Math.max(2.5, 3.5)); // 3.5
      
          // We can use these in expressions, too:
      
          double x = Math.min(5, -13);
          double y = Math.max(x, x/2);
          double z = Math.abs(x) + Math.abs(y);
          System.out.println(x);
          System.out.println(y);
          System.out.println(z);
        }
      }

      Some Math methods (like pow and sqrt) do not have int versions:

      class MyCode {
        public static void main(String[] args) {
          System.out.println(Math.pow(2, 3));   // 8.0 (and not int 8), which is 2^3
          System.out.println(Math.sqrt(9));     // 3.0 which is the square root of 9
          System.out.println(Math.pow(9, 0.5)); // ditto (why?)
        }
      }
    7. Even more Math methods (signum and round)
      class MyCode {
        public static void main(String[] args) {
          System.out.println(Math.signum(5));     // 1.0
          System.out.println(Math.signum(5.0));   // 1.0
          System.out.println(Math.signum(0));     // 0.0
          System.out.println(Math.signum(-42.0)); // -1.0
          
          int x = (int)Math.round(3.5); // must cast Math.round's result with (int) to use as an int!
          int y = (int)Math.round(-3.5);
          System.out.println(x);  // 4
          System.out.println(y);  // -3
        }
      }
      

carpe diem   -   carpe diem   -   carpe diem   -   carpe diem   -   carpe diem   -   carpe diem   -   carpe diem   -   carpe diem   -   carpe diem