Double Wert auf 2 Nachkommastellen kürzen

  • Antworten:6
  • Bentwortet
Philipp H
  • Forum-Beiträge: 184

22.07.2014, 20:12:03 via Website

Hey ich steh hinter einem Problem ich will dass mein double wert nur 2 Nachkommastellen hat aber irgendwie will es nicht formatiernen....
hier der Code:

import java.text.DecimalFormat;

import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import de.nimaldev.helpforschoolgeometrierechnerlite.R;
import de.nimaldev.helpforschoolgeometrierechnerlite.ZweiDActivity;

public class Rechteck extends Activity {

private double a;
private double b;
private double fläche;
private double umfang;

private String LösungFläche;
private String LösungUmfang;
private String A;
private String B;

//DecimalFormat
DecimalFormat df = new DecimalFormat("#0.000");


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_rechteck);

    final Animation animation = AnimationUtils.loadAnimation( getBaseContext() , R.anim.flip);

    final ImageView iVrechteck = (ImageView) findViewById(R.id.imageViewRechteck);


    iVrechteck.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


            ImageView imageView = (ImageView) iVrechteck;

            assert(R.id.imageViewRechteck == imageView.getId());
            Integer integer = (Integer) imageView.getTag();
              integer = integer == null ? 0 : integer;

                 switch(integer) {
                   case R.drawable.rechteckform:
                        imageView.startAnimation(animation) ;
                        imageView.setImageResource(R.drawable.rechteckformel);
                        imageView.setTag(R.drawable.rechteckformel);
                        break;
                    case R.drawable.rechteckformel:
                        imageView.startAnimation(animation) ;
                        imageView.setImageResource(R.drawable.rechteckform);
                        imageView.setTag(R.drawable.rechteckform);
                        break;
                   default:
                       imageView.startAnimation(animation) ;
                       imageView.setImageResource(R.drawable.rechteckformel);
                       imageView.setTag(R.drawable.rechteckformel);
                       break;


                  }
                }

    });


    iVrechteck.setAnimation(null);




    //ActionBar
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);

    //clear Button
    final Button RechteckClear = (Button) findViewById(R.id.buttonClear);
    RechteckClear.setVisibility(View.INVISIBLE);
    // ClickListener für Clear Button
    RechteckClear.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent i = new Intent(Rechteck.this, Rechteck.class);
            //Activity starten
            startActivity(i);


        }
    });

    //TextView Fläche
     final TextView ErgebnisFläche = (TextView) findViewById(R.id.textViewLoesung);


     //textView Umfang
     final TextView ErgebnisUmfang = (TextView) findViewById(R.id.textViewUmfang);





    //Button zum rechnen der lösung
    Button Enter = (Button) findViewById(R.id.buttonRechteckGleich);
    Enter.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {



            //Edittext für A
            EditText ZahlA = (EditText) findViewById(R.id.editTextRechteckA);

            A = ZahlA.getText().toString();
            if(A.length()==0){A="0";}
            a = Double.valueOf(A).doubleValue();


            //Edittext für B
            EditText ZahlB = (EditText) findViewById(R.id.editTextRechteckB);

            B = ZahlB.getText().toString();
            if(B.length()==0){B="0";}
            b = Double.valueOf(B).doubleValue();


            //rechnen der Fläche
            fläche = a * b;
            df.format(fläche); 
            LösungFläche = Double.toString(fläche);              
            ErgebnisFläche.setText(LösungFläche + " cm²/m²/km²");   

            //rechenen Umfang
            umfang = a + a + b + b;
            df.format(umfang);
            LösungUmfang = Double.toString(umfang);
            ErgebnisUmfang.setText(LösungUmfang + " cm/m/km");


            //Clear Button anzeigne lassen

            RechteckClear.setVisibility(View.VISIBLE);


        }
    });


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.rechteck, menu);
    return true;
}
@Override
 public  boolean onOptionsItemSelected(MenuItem item) {

        Intent i = new Intent(Rechteck.this, ZweiDActivity.class);
        startActivity(i);
        return true;

}
}

Ein Fehler ist kein Fehler es ist ein Feature///https://play.google.com/store/apps/developer?id=Nimal+Development

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

22.07.2014, 20:26:54 via Website

Du kannst die Zahl per Math Methoden runden.
Dann kannst du deine 2 Stellen haben

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Georg C.
  • Forum-Beiträge: 235

22.07.2014, 21:21:01 via Website

//rechenen Umfang
umfang = a + a + b + b;
df.format(umfang); // Formatierung zu 3! Nachkommastellen -> ("#0.000")
L&amp;ouml;sungUmfang = Double.toString(umfang); // < - M&ouml;gliche Fehler -> .... Value
ErgebnisUmfang.setText(L&amp;ouml;sungUmfang + " cm/m/km");

oder
nehme Pascal P. denen sein Vorschlag.
und
lasse deutsche Umlaute aus den Veriablen bitte! weg.

LG
Georg

Sorry für Gramatik & Stilistik Fehler.

Antworten
Georg C.
  • Forum-Beiträge: 235

22.07.2014, 23:03:22 via Website

Klar - es st einfacher - "hier - du - sag mir was ich da reinschreiben soll ..."
Versuche es selber, - es ist sehr einfach:

KLICK

und passendes (richtiges!) anwenden - FERTIG

Sorry auch.

LG
Georg

— geändert am 22.07.2014, 23:04:17

Sorry für Gramatik & Stilistik Fehler.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.07.2014, 06:36:24 via App

Aber sowas über die Stringformatierung machen finde ich blöd, stell dir vor, er will mit der zahl witerrechnen, dann müsste erst wieder ein Parse etc. rein

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Georg C.
  • Forum-Beiträge: 235

23.07.2014, 23:25:24 via Website

Hallo,

Aber sowas über die Stringformatierung machen finde ich blöd, stell
dir vor, er will mit der zahl witerrechnen, dann müsste erst wieder
ein Parse etc. rein

ein paar Wiederholungen im Code ist keine Schande (Effizient) - hihi
Bin davon ausgegangen!
OK.

Für eine Mehrfachnutzung ist aber auch nicht viel Arbeit mehr! nötigt.
Eine (5 Zeilen) Methode reich es aus.
Sorgt sogar für ..... mehr Transparenz.

Z.B.:

public String getFormattedString(double value) 
    {   
        String stringValue = df.format(value); 
        return stringValue;
    }

Weiterhin ->:

double double_zahlLONG = 4.243764029875234;
String myformattedString = null;

...

public String getFormattedString(double value) 
    {   
        String stringValue = df.format(value); 
        return stringValue;
    }

...

myformattedString = getFormattedString(double_zahlLONG);
...

LG
Georg

Sorry für Gramatik & Stilistik Fehler.

Antworten