2017-09-28 7 views
0

müssen die letzte Nummer der Operation löschen. newNumber ist ein Double und es ist ein Widget vom Typ Button. Hier ist ein Beispiel, was ich tun muss: 238.213 - ButtonD = 238.21 (ohne die Nummer "3" zumindest). Jedes Mal, wenn die Taste gedrückt wird, ertönt ein Zeichen wie bei einer Tastatur.entfernen Sie ein Zeichen aus einem Doppel

Button buttonD = (Button) findViewById(R.id.buttonD); 

    buttonD.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      String nn = ""; 
      newNumber - nn; //newNumber is a Double 

      //need to erase the last number of the operation 
      //1234 - buttonD = 123 
      //12133242.9231 - buttonD = 12133242.923 

     } 
    }); 
+0

Machen Sie es zu einem 'BigDecimal' oder einem' String', 'double' hat keine willkürliche Genauigkeit. –

+0

Machen Sie es String und schneiden Sie das letzte Zeichen aus –

+0

Definieren Sie auch Ihr Zahlenformat. Und bigDecimal ist weg zu gehen, besonders im Umgang mit Dezimalzahlen –

Antwort

1

Sie können das Double in String konvertieren und das letzte Zeichen löschen. Dann wandle es zurück in Doppel;

Button buttonD = (Button) findViewById(R.id.buttonD); 

buttonD.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
      deleteOneChar(42.1037) 
     } 
    } 
}); 

private Double deleteOneChar(double number) { 
    String aoeu = String.valueOf(number); 
    aoeu = aoeu.substring(0, aoeu.length() - 1); 
    if (aoeu.chatAt(aoeu.length()-1).equals(",") || aoeu.chatAt(aoeu.length()-1).equals(".")) { 
     aoeu = aoeu.substring(0, aoeu.length() - 1); 
    } 
    return Double.parseDouble(aoeu); 
} 
+0

danke, aber newNumber ist ein editText widget –

+0

ok, ich habe es bearbeitet, bitte versuchen Sie es – zihadrizkyef

+0

, was Sie tun müssen, ist nur Aufruf 'deleteOneChat (yournumberhere)'. Sie müssen die Variable innerhalb der Methode nicht berücksichtigen – zihadrizkyef

Verwandte Themen