Autor Thema: Datum und Zeitbrechnung  (Gelesen 20380 mal)

Marinero Atlántico

  • Gast
Re: Datum und Zeitbrechnung
« Antwort #40 am: 13.06.05 - 00:30:06 »
ok. Fertig.
BigDecimal ROCKS   8) O0 8)
Code
public class ASimpleMathQuestion {

	public static void main(String[] args) {
		 
		//System.out.println("a simple math task for my computer...\na) using double: (1 / 3) * 3=" + ((1/3) + 3));
		//System.out.print("b) using BigDecimal: (1 / 3) * 3=");
		int scale = 10000;
		double dSum = 0;
		double dOneThird = (double) 1/3;
		BigDecimal anOne = new BigDecimal(1);
		
		BigDecimal aThree = new BigDecimal(3);
		BigDecimal aOneThird = anOne.divide(aThree, scale, BigDecimal.ROUND_HALF_DOWN);
		BigDecimal theSum = new BigDecimal(0);
		for (int i = 0; i<= 1000; i++) {
			theSum = theSum.add(aOneThird);
			dSum += dOneThird;
		}
		
		System.out.println("theSum (BigDecimal=" + theSum);
		System.out.println("dSum (double)=" + dSum);
		
		
		
	}
}

Ergebnis:
theSum (BigDecimal=333.<9998_mal_die_6>333 *
dSum (double)=333.66666666666515

* kann hier nicht dargestellt werden. Habs in Textpad kopiert und da waren 9998 6en nach dem Komma. Wenn ich den scale Wert noch höher als 10000 setze, dürte es noch genauer werden, aber hier gibts natürlich auch irgendwo eine Grenze.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz