Konsolen-Ausgabe formatieren

Status
Nicht offen für weitere Antworten.

Wusaa

Aktives Mitglied
Hi,

habe ein Programm geschrieben dass die 5-Tageslinie einer Aktie ausgibt.

Leider rechnet es meine zahlen mit 14 Nachkommastellen aus und ich hätte gerne nur 2 🙂

Und die Aufzählung der Tage ist auch nicht korrekt, denn die einstelligen Zahlen sollten sich auf der Höhe der zweiten Stelle der zweistelligen Zahlen befinden.


Kann mir jemand sagen wie ich das richtig formatiert bekommen?


MFG


Code:
public class Stock {

   double[] kurs;
   int WKN;
   
   public Stock( double[] kurs){
      this.kurs  = kurs; 
   }
   
   public double[] calcNTagLinie( int n ){
	      // neues array fuer die tageslinie anlegen
	      double[] ntag = new double[kurs.length -n+1];
	      
	      // wert des kursverlaufs durchlaufen
	      for( int i = 0; i<kurs.length-n+1; i++ ) {
	    	  double sum = 0;
	         // summe bilden, ueber n tage
	         for( int j = 0; j<n; j++ ) {
	        	 sum += kurs[i+j];
	         }
	         // durchschnitt in das array fuer die tageslinie schreiben
	         ntag[i] = sum / n ;
	      }
	      return ntag;
   }
   
   public static void main( String[] args ) {
	   
		  double[] kurs = {47.20, 47.40, 47.80, 47.70 ,48.20, 48.20, 48.40, 47.93, 48.00, 48.30, 48.55, 48.70, 48.55, 49.20, 49.10};
		  int WKN = 93221;
		  
	      Stock nterTag = new Stock( kurs );
	      
	      double[] nlinie = nterTag.calcNTagLinie( 5 );
	      
	      int n = 5;
	      
	        System.out.println ("WKN:" +WKN);
	      	System.out.println ("Lfd.Tag" +     "  Schlussurs" +"   5-Tageslinie");
	      
	      		for (int i=0; i<kurs.length; i++) {
	      			if (i<n) {    
	           
	        System.out.println((i+1)+"          "+kurs[i] +"                -     ");
	      	}    else {
	        System.out.println((i+1)+"          "+kurs[i] +"            "+nlinie[i-n]);
	        } 
	      }
	} 
}




Konsolen Ausgabe:

WKN:93221
Lfd.Tag Schlussurs 5-Tageslinie
1 47.2 -
2 47.4 -
3 47.8 -
4 47.7 -
5 48.2 -
6 48.2 47.65999999999999
7 48.4 47.85999999999999
8 47.93 48.059999999999995
9 48.0 48.086000000000006
10 48.3 48.146
11 48.55 48.166
12 48.7 48.236000000000004
 
Mit den Methoden namens System.out.printf kann man Daten formatieren und ausgeben.

Bsp: printf("CHF %.2f", 34.565); Ausgabe: CHF 34.57 (2 nachkommastellen)

MfG
 
Ich bekomm die Ausgabe einfach nicht mit 2 Nachkommastellen formatiert 🙁

kann mir bitte jemand weiterhelfen!
 
was funktioniert denn an dem vollständigen Beispiel nicht?

noch ein anderes Verfahren:

Code:
public class Test
{
    public static DecimalFormat DECIMAL2_FORMAT = new DecimalFormat("0.00");

    // static
    // {
    // DECIMAL2_FORMAT.setDecimalFormatSymbols(new
    // DecimalFormatSymbols(Locale.ENGLISH));
    // }

    public static void main(String args[])
        throws Exception
    {
        double d = 48.086000000000006;

        System.out.println(d);
        System.out.println(DECIMAL2_FORMAT.format(d));


        System.out.printf("CHF %.2f", 34.565);
    }
}

wenn du lieber Punkt als Komma haben willst,
dann den auskommentieren Bereich wieder reinnehmen
 
Nicht getestet, sollte aber so laufen.
Code:
for (int i=0; i<kurs.length; i++) {
   if (i<n) {
      System.out.printf("%02d %.2f -", i+1, kurs[i]);
   }
   else {
      System.out.printf("%02d %.2f %.2f", i+1, kurs[i], nlinie[i-n]);
   }
}
 
sobald ich es mit dem printf mache wird es nicht mehr untereinander ausgegeben sondern in einer Zeile???
 
dann ein
System.out.println();
dahinter

oder
System.out.printf("irgendwas \n", 34.565);
 
Ups, Zeilenumbrüche fehlen
Code:
for (int i=0; i<kurs.length; i++) { 
   if (i<n) { 
      System.out.printf("%02d %.2f -\n", i+1, kurs[i]); 
   } 
   else { 
      System.out.printf("%02d %.2f %.2f\n", i+1, kurs[i], nlinie[i-n]); 
   } 
}
oder besser
Code:
final String lineSeparator = System.getProperty("line.separator");
for (int i=0; i<kurs.length; i++) { 
   if (i<n) { 
      System.out.printf("%02d %.2f -%s", i+1, kurs[i], lineSeparator); 
   } 
   else { 
      System.out.printf("%02d %.2f %.2f%s", i+1, kurs[i], nlinie[i-n], , lineSeparator); 
   } 
}
OK, jetzt aber. 😉
 
:autsch:
Code:
final String lineSeparator = System.getProperty("line.separator"); 
for (int i=0; i<kurs.length; i++) { 
   if (i<n) { 
      System.out.printf("%02d %.2f -%s", i+1, kurs[i], lineSeparator); 
   } 
   else { 
      System.out.printf("%02d %.2f %.2f%s", i+1, kurs[i], nlinie[i-n], lineSeparator); 
   } 
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben