/* Copyright (c) SEMM NL All rights reserved.
Author : Paul Hamaker. Part of JavaLessons.com
This code is for educational purposes only. Use at own risk.*/

1. import java.awt.* ;  

2. import java.applet.* ; 

3. import java.math.*; 

4. // import static java.lang.Math.*; 

5.  

6. public class Calculate 

7.   extends Applet 

8.

9.  TextArea ta = new TextArea(16,30); 

10.  TextArea ta2 = new TextArea(16,20); 

11.  TextArea ta3 = new TextArea(16,12); 

12.   

13.  public void init() 

14.  { 

15.   add(ta);  add(ta2); add(ta3); 

16.    

17.   double result = 64.5

18.   result +=  5.4

19.   ta.append( result  + "\t result\n"); 

20.  

21.   int chopped = (int) result ; 

22.   ta.append( chopped + "\t cutshort\n"); 

23.  

24.   long rounded = Math.round( result ) ; 

25.   ta.append( rounded  + "\t rounded \n\n"); 

26.  

27.   double whatthe = chopped / 2

28.   ta.append( whatthe + "\t what !?\n"); 

29.    

30.   double dprecision = result / 7.0

31.   ta.append( dprecision  + "\t db.prec.\n"); 

32.  

33.   float lessprecision = ( (float)result ) / 7.0f ; 

34.   ta.append( lessprecision  + "\t less prec.\n\n"); 

35.  

36.   double root = Math.sqrt( 16.002 ) ; 

37.   ta.append( root  + "\t sqrt\n"); 

38.  

39.   double max = Math.max( root, 4.0 ); 

40.   ta.append( max  + "\t max\n"); 

41.    

42.   java.text.NumberFormat fm = 

43.     java.text.NumberFormat.getNumberInstance(); 

44.  

45.   fm.setMinimumIntegerDigits( 3 ); 

46.   fm.setMinimumFractionDigits(5); 

47.   fm.setMaximumFractionDigits(5); 

48.  

49.   String s = fm.format( root ) ; 

50.   ta.append( s + "\t formatted\n\n" ); 

51.    

52.   ta.append( Integer.MAX_VALUE + "\t int MAX\n" ); 

53.   ta.append( 2147483648L + "\t long literal\n" ); 

54.   ta.append( Long.MAX_VALUE + "  long MAX\n" ); 

55.  

56.   double counter = 0.0

57.   double add = 0.1

58.  

59.   ta2.append( "doubles :\n"); 

60.    

61.   for (int i=1 ; i <= 10 ; i++ ) {   

62.     counter += add ; 

63.     ta2.append( counter  + "\n"); 

64.   } 

65.   

66.   BigDecimal bd = new BigDecimal( "0.0" ); 

67.   BigDecimal bd2 = BigDecimal.valueOf( 0.1 ); 

68.  

69. // MathContext mc = new MathContext( 2, RoundingMode.HALF_UP ); 

70.   ta3.append( "BigDecimals :\n"); 

71.   for (int i=1 ; i <= 10 ; i++ ) {   

72.     bd = bd.add( bd2 ); 

73. //    bd = bd.add( bd2, mc ); 

74.     ta3.append( bd + "\n"); 

75.   } 

76.   bd = bd.multiply( new BigDecimal( 100 ) ); 

77.   bd = bd.divide( new BigDecimal( 6 ),  

78.       3, BigDecimal.ROUND_HALF_EVEN ); 

79. //      3, RoundingMode.HALF_EVEN ); 

80.   ta3.append( "\n" + bd + "\n"); 

81.    

82. //mc=  MathContext.DECIMAL32; // 7 digits precision, HALF_EVEN ,IEEE 754R 

83. //mc=  MathContext.DECIMAL64 ; // 16 digits precision, (same)  

84. //mc=  MathContext.DECIMAL128 ; // 34 digits precision, (same)  

85. //mc=  MathContext.UNLIMITED ; // as many digits as needed  

86.

87.

88.