// DoublesAsApproximates.java class DoublesAsApproximates { public static void main(String[] args) { System.out.println("This program demonstrates some problems with doubles"); System.out.println("in Java. In particular, they only give APPROXIMATE"); System.out.println("answers. These are VERY CLOSE (within, say, 10^-10)"); System.out.println("but still NOT EXACT!"); System.out.println("Here are some examples:"); System.out.println(); System.out.print("The square root of 2 times itself = "); System.out.println(Math.sqrt(2) * Math.sqrt(2)); System.out.println(); System.out.print("sin(pi) = "); System.out.println(Math.sin(Math.PI)); System.out.println(); System.out.println("Caveat Emptor!!!"); System.out.println(); } /////////////////////////////////// // readString, readInt, readDouble /////////////////////////////////// public static String readString() { java.io.InputStreamReader isr = new java.io.InputStreamReader(System.in); java.io.BufferedReader d = new java.io.BufferedReader(isr); try { return d.readLine(); } catch (Exception e) { return "error"; } } public static int readInt() { return Integer.parseInt(readString()); } public static double readDouble() { return Double.valueOf(readString()).doubleValue(); } }