You are not logged in.

  • Login

1

Wednesday, January 30th 2008, 4:22pm

Rechner, Float, Nachkommastellen

:) Hallo!

Ich wollte eine kleine Methode schreiben die das Ergebnis einer Division als Float-Wert zurückliefert. Allerdings funktioniert das mit den Nachkommastellen nicht so ganz(bei jedem ergebnis .0). Ich hoffe mir kann jemand helfen :).Hier ist der Java-Quellcode:

public void Berechnen(float a,int b)
{
if(b > 0)
{
exaktesErgebnis = a/b;
System.out.println(exaktesErgebnis);
}

}

2

Wednesday, January 30th 2008, 4:36pm

Der Code ist unvollständig, von welchem Typ ist denn exaktesErgebnis.

3

Wednesday, January 30th 2008, 5:46pm

Zu Beginn der Testklasse, die ich zu diesem Zwecke erstellt habe habe ich auch eine Variable private float exaktesErgebnis implementiert.

4

Wednesday, January 30th 2008, 5:47pm

Achso ok, dann musst du bei der Division b nur noch auf einen float casten.

5

Wednesday, January 30th 2008, 5:51pm

Wenn ich b auch auf float setze, kommt eine Warnung und es bricht ab

6

Wednesday, January 30th 2008, 5:52pm

Würdest du es in deiner unendlich Weißheit auch sagen welche Warnung kommt?

7

Wednesday, January 30th 2008, 5:55pm

^^ Ja klar!

Also da steht: "possible loss of precision".

8

Wednesday, January 30th 2008, 6:00pm

Sollte aber trotzdem funktionieren. Musst mal gucken ob du Warnings as Errors oder so in den Compilereinstellungen aktiviert hast. Sollte sonst trotzdem funktionieren.

9

Wednesday, January 30th 2008, 6:07pm

Ich hab jetzt so ziemlich alles versucht aber es funktioniert trotzdem nicht.
Der Fehler bleibt und dann bricht es logischerweise ab. Das muss aber irgendwie mit dem typ zusammenhängen, denn wenn ich alles auf int setze geht es(dann natürlich aber auch nur ganzzahliges Ergebnis)

Das ich als Plattform zum Auslesen BlueJ benutze dürfte ja egal sein es sollte ja immer funktionieren oder??

Könnte mir bitte jemand einen selbstgeschriebenen Quellcode schicken der dann auch funktioniert!!! Das dürfte ja bei profis nicht lange dauern;)



Wäre sehr nett ;)

10

Wednesday, January 30th 2008, 8:11pm

Java beschwert sich da eigentlich nicht. Vielleicht meckert die BlueJ IDE.
Verwende doch bei dem "b" ein float als Typ.

PS: EDIT Button benutzen!

11

Thursday, January 31st 2008, 8:37am

Das funktioniert nicht!

Da kommt immer wieder der oben beschriebene Fehler sobald ich eine oder beide variablen auf float setze.

12

Thursday, January 31st 2008, 12:02pm

dann mach (float) vor exaktesErgebnis

13

Thursday, January 31st 2008, 2:19pm

;( Es hilft alles nix!! a und b float,nur einer von beiden oder rückgabewert float und dann halt return.. Der compiler zeigt keinen Fehler aber sobald die methode ausgeführt wird geht nix.Ich weis einfach nicht mehr weiter. Probierts einfach selbst aus. Hier nochmal der überarbeitete Quelltext der mich zum verzweifeln bringt:

public void GenauesErgebnis(float a,int b)

{

if(b > 0)
{
exaktesErgebnis = a/b;
System.out.println(exaktesErgebnis);
}
}

14

Thursday, January 31st 2008, 8:36pm

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
class easyCoder {
public static void GenauesErgebnis(float a,float b) {
float exaktesErgebnis;
if(b > 0)  {
exaktesErgebnis = a/b;
System.out.println(exaktesErgebnis);
}
}
public static void main (String args[]) {
GenauesErgebnis(12,4);
}
}


also bei mir funkt es .. der zeigt keinen fehler.
in deinem code musst du exaktesErgebnis deklarieren und vllt hast du die methode falsch aufgerufen ..

15

Sunday, February 3rd 2008, 9:37pm

Der compiler zeigt keinen Fehler aber sobald die methode ausgeführt wird geht nix.
Wie rufst du die Funktion auf? Ich tippe mal auf Klasse.GenauesErgebnis(5.0, 2); . Dann muss auch eine Fehlermeldung kommen. Denn 5.0 ist vom Typ Double und es gibt in Java keine implizite Typumwandlung von Double zu Float. Um ein Float zu erstellen muss man hinter die Zahl ein F oder f stellen, z. B. "5.0f".

Social bookmarks