BigNum.java

 

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) ) );
   }
}