nachkommastelle

Status
Nicht offen für weitere Antworten.

hallo000

Mitglied
Ich bin ein totaler Anfänger in Java und habe da ein "Problem", eigentlich nur einen Schönheitsfehler bei meinem Programm.
Das Programm soll den Benutzer 2 Fahrenheitswerte eingeben lassen und dann eine Tabelle von dem ersten bis zu em zweiten Wert machen, wobei der Celsiuswert bei jedem Durchgang um 0.1 erhöht werden soll.
Das Programm funktioniert auch aber nach einigen gerechneten Einträgen in der Tabelle kommt auf einmal weit hinter dem Komma noch eine Zahl z.B. °C = 17.1000000005.
Ich will nun wissen warum am Ende der Zahl noch eine winzige Nachkommastelle kommt obwohl ich den Wert nur um 0.1 erhöhe.



public static void main(String[] args) throws IOException {


float fha; //Fahrenheit Anfang
float fhe; //Fahrenheit Ende
float ca;


BufferedReader stdIn;
String line;

stdIn = new BufferedReader (new InputStreamReader (System.in));
System.out.println("Programm zur tabellarischen Celsiusberechnung eines bestimmten Intervalls");

System.out.println("Geben sie den Anfangs-Fahrenheitswert an:");
line = stdIn.readLine();
fha = Float.parseFloat(line);

new BufferedReader (new InputStreamReader (System.in));
System.out.println("Geben sie den End-Fahrenheitswert an:");
line = stdIn.readLine();
fhe = Float.parseFloat(line);


ca = ((5*(fha-32))/9);


while (fha<fhe){

fha = ((ca*9)/5)+32;

System.out.println("°C = " + ca + "°F = " + fha);

ca =(float) (ca+0.1);
}
 

Ezra

Bekanntes Mitglied
0.1 ist im Binärsystem ein periodischer Bruch, und zwar:
0.00011001100110011001100110011001100110011001100110011...
Da der Computer nicht unendlich viele Nachkommastellen abspeichern kann, entsteht bei jeder Rechnung ein kleiner Fehler. Der summiert sich mit jeder Addition, wird so immer größer und das siehst Du in der Ausgabe.
 

hallo000

Mitglied
danke
dann hätte ich aber noch eine Frage
wie kann man einstellen wie viel Nachkommastellen angezeigt werden sollen
 

eRaaaa

Top Contributor
huhu,

schau dir mal die klasse numberformat oder auch decimalformat(DecimalFormat (Java Platform SE 6)) an, damit ginge das.

ein beispiel:

Java:
		float f = 0.0100001f;
		DecimalFormat format = new DecimalFormat("#0.00");
		System.out.println(format.format(f));
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben