Download BigNum.java source file
// Demo of using BigInteger and BigDecimal. Points to note: // BigInteger doesn't provide an int or long constructor, so the // static valueOf method is used. // BigDecimal does have a double constructor, but it should never be used! // There is also a BigDecimal constructor that uses a BigInteger. // // Written 8/2005 by Wayne Pollock, Tampa Florida USA. import java.math.*; import static java.math.BigInteger.*; public class BigNum { public static void main ( String [] args ) { int digit = 7; // a randomly chosen digit. BigInteger bi = BigInteger.valueOf( 12345679 ); BigInteger nine = new BigInteger( "9" ); // Note string constructor. bi = bi.multiply( nine ); bi = bi.multiply( BigInteger.valueOf( digit ) ); System.out.println( "the result is: " + bi ); BigDecimal num = BigDecimal.ZERO; num = num.add( BigDecimal.valueOf( 3.14 ) ); num = num.divide( BigDecimal.valueOf( 2 ), BigDecimal.ROUND_HALF_EVEN ); System.out.println( "pi/2 = " + num ); // Calculate odds of winning Florida lotto (pick 6 of 53 numbers): // Formula for choosing 6 of 53 is: C(53, 6) = 53!/(6! * (53-6)!) System.out.println( "\nFlorida Lotto Odds of Winning\n" ); final int possibleValues = 53; final int numToPick = 6; BigInteger numerator = factorial( valueOf(possibleValues) ); BigInteger denominator = factorial(valueOf(numToPick)).multiply( factorial(valueOf(possibleValues-numToPick)) ); System.out.println( "numerator = " + numerator ); System.out.println( "demominator = " + denominator ); BigInteger odds = numerator.divide( denominator ); System.out.println( "Odds of winning Florida lotto: 1 in " + odds ); } // Computes num * (num-1) * (num-2) * ... * 3 * 2 * 1 static BigInteger factorial ( BigInteger num ) { if ( num.equals(ONE) ) // notice static import use! return ONE; return num.multiply( factorial( num.subtract(ONE) ) ); } }