Rechner Dezimalzahlen

R

RacingSystems

Gast
Guten Morgen,

ich brauch eure Hilfe, unzwar folgendes:

Ich habe mir einen Rechner gebastelt, es wird folgende Formal damit berechnet:

( ( X * 5 / Y ) - 6 ) * - 1

Damit werden bei mir an der Schule die Noten berechnet. Habe jetzt soweit alles damit es funktioniert, ich habe allerdings 2 Probleme, wenn ich X und Y als Dezimal (mit Punkt) eingebe stürzt die App ab und wenn eine Dezimalzahl rauskommt wird aufgerundet zu vollen Zahl, z.B.:

( ( 20 * 5 / 40 ) - 6 ) * - 1

Ergibt: 3,5

In der App kommt aber 4

Hier mal die Codes:

Java:

Code:
public void ButtonKlick (View view) {
        int zahl1;
        int zahl2;
        int Ergebniss;
        EditText Feld1 = (EditText)findViewById(R.id.Zahl1);
        EditText Feld2 = (EditText)findViewById(R.id.Zahl2);
        EditText FeldErgebnis = (EditText)findViewById(R.id.etErgebniss);
        if (Feld1.getText().toString().length() == 0) {
            return;
        }
        if (Feld2.getText().toString().length() == 0) {
            return;
        }
        zahl1 = Integer.parseInt(Feld1.getText().toString());
        zahl2 = Integer.parseInt(Feld2.getText().toString());
        Ergebniss = ((zahl1 * 5 / zahl2) - 6) * - 1;


        FeldErgebnis.setText(String.valueOf(Ergebniss));
    }

XML:

Code:
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/etErgebniss"
        android:layout_below="@+id/berechnung"
        android:layout_alignLeft="@+id/berechnung"
        android:layout_alignStart="@+id/berechnung"
        android:layout_alignRight="@+id/Zahl2"
        android:layout_alignEnd="@+id/Zahl2"
        android:inputType="numberDecimal" />

Könnt ihr mir weiterhelfen? Optimal wäre wenn ich den Punkt sperre dafür aber Komma erlaube und das Kommazahlen rauskommen und auch tippbar sind.

MfG RacingSystems

Der ursprüngliche Beitrag von 01:42 Uhr wurde um 01:56 Uhr ergänzt:

Problem gefunden, wenn man auf eine Youtube anleitung hört :sad:

Ich arbeite hier mit Integer, aber für Dezimalen muss man mit Double arbeiten. Sorry.

Jetzt funktioniert es.
 
Zuletzt bearbeitet:
Du solltest mit double statt mit int arbeiten und
zur Sicherheit
((X*5.0/Y)-6.0)*(-1.0)
schreiben. Zwar kann man int und double mischen, dann muss man aber die Verwendeten Regeln genau kennen.

Gruß
E.S.
 
Er hatte sich doch schon selber korrigiert. :rolleyes2:

Ja, ein selbstreply wäre praktischer gewesen. :D
 
Wobei meiner Meinung nach ein double hier unnötig ist.
Double bedeutet, dass die Zahl die "doppelte Genauigkeit" erhält.
Bei einem Taschenrechner wird es eine float auch tun. :)
 
ui_3k1 schrieb:
Wobei meiner Meinung nach ein double hier unnötig ist.
Double bedeutet, dass die Zahl die "doppelte Genauigkeit" erhält.
Bei einem Taschenrechner wird es eine float auch tun. :)

Da wäre ich vorsichtig: 121212.12f + 121212.12f = 242424.23
 
Zuletzt bearbeitet:

Ähnliche Themen

B
  • Beka1801
Antworten
1
Aufrufe
576
jogimuc
J
P
Antworten
3
Aufrufe
2.436
swa00
swa00
Outlaw
  • Outlaw
Antworten
2
Aufrufe
763
Outlaw
Outlaw
Zurück
Oben Unten