# java programm- nachkommastellen



## agosinga (3. November 2007)

Wie kann ich es so einstellen, dass die Promille mit zb. 4 Nachkommastellen ausgegeben werden?
Bei manchen Beträgen hab ich bis zu 20 nachkommastellen.
Eher dringend.

DANKE




import java.util.*;

public class Bsp06{


    public static void main(String[] args){

	Scanner myScanner = new Scanner (System.in);
	double Taler, Euro, GeldBetrag;
	double Provision;

	Euro = 3.14;

	System.out.println();

	System.out.print("Geben Sie den gewuenschten Wechselbetrag in Euro ein: ");
	GeldBetrag = SavitchIn.readLineDouble();



	Taler = GeldBetrag/Euro;
	double Kreuzer = Taler*20;
	Kreuzer = (int) (Math.round(Kreuzer));
	Provision = Kreuzer/100;

	double Promille = Provision/1000;
	int taler1 = (int)Kreuzer/20; int kreuzer1 = (int)Kreuzer%20;

	System.out.println();
	System.out.println("Sie erhalten:;");

	System.out.println(taler1 +" Taler; "+kreuzer1+" Kreuzer;");
	System.out.println("Die Bank behaelt sich "+Promille+ " an Provision");

     }
 }


----------



## Orbit (3. November 2007)

Da ich nicht glaube dass das direkt geht, machs per String bearbeitung...

double Promille = Provision/1000;
Wird dann zu:
String Promille = ""+Provision/1000;  //Wandelt zu String um...
Promille = Promille.substring(0, Promille.indexOf(".")+4); //Kürzt die nachkommastellen weg

^ ^der rundet dann aber nicht....
Ich habs net getestet, Großkleinschreibung etc nochmal überarbeiten!!

EDIT: ich hatte , statt . geschrieben.. das war natürlich quatsch;-)
Mfg Orbit...


----------



## zeja (3. November 2007)

Benutz NumberFormat oder DecimalFormat:


```
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(4);
nf.setMinimumFractionDigits(4);
nf.setRoundingMode(RoundingMode.HALF_UP);
String strg = nf.format(zahl);
```

@Orbit:

Mit ""+zahl etwas in einen String umzuwandeln ist nicht der schöne weg. Dafür gibt es Double.toString(zahl), Integer.toString(zahl) und neuerdings sogar String.valueOf(<soziemlichalles>).


----------

