die Multiplikation von Dezimalzahlen in java
Ich habe den folgenden code der funktioniert, wenn ich die Multiplikation von ganzen zahlen jedoch, wenn ich versuche zu multiplizieren Dezimalzahlen und die Antwort erscheint wie eine decimal-Zahl, die ich erhalte eine Fehlermeldung
public void actionPerformed(ActionEvent e) {
int num1=Integer.parseInt(textArea_price.getText());
int num2=Integer.parseInt(textArea_quantity.getText());
int result = num1*num2;
textField_Name.setText(Integer.toString(result));
Irgendwelche Vorschläge, was ich ändern kann oder hinzufügen, damit dieser code funktioniert mit Dezimalzahlen geschätzt wird.
- Bitte was Fehler, die Sie sehen, und auf welcher Linie.
- (Und was meinst du mit "ganzen zahlen" vs "Dezimalzahlen"?)
- Sie sind sich bewusst, dass die parseInt() kann nur analysieren, int s, richtig?
- Die Fehlermeldung die ich erhalte ist 14:44.56 78[dbg] CShellExt::CShellException in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "12.34"
- Will er wohl parse-floating-point-zahlen..
- also du meinst es wird nicht akzeptieren, Streicher und daher nicht akzeptieren, jede andere Zeichen als die zahlen?
- Es akzeptiert nicht die string-Repräsentation der Gleitkomma-zahlen (die mit einem Komma :)), sondern nur die int ' s (was Sie sich beziehen, als "ganze zahlen")..
Du musst angemeldet sein, um einen Kommentar abzugeben.
BigDecimal sein könnte, was Sie wollen.
v
es sollte deutenvalueOf
new BigDecimal(string)
Ändern
int/Integer
zudouble/Double
.Beachten Sie, dass
double
ist ungenau (zum Beispiel1.2 * 9
gibt10.799999999
sein, wenn es10.8
). Erwägen Sie die VerwendungBigDecimal
, wenn Genauigkeit gefordert ist.Wenn Sie erwarten, dass reelle zahlen in die Textfelder, dann double statt int.
Verwenden
Double.parseDouble()
stattInteger.parseInt()
. Und verwendendouble
Typ von Variablen:double num1 = Double.parseDouble(textArea.getText());
Meine Vermutung ist, dass Sie mit dem Begriff "Dezimalzahl" auf (fälschlicherweise) beziehen sich auf zahlen, die ein Dezimaltrennzeichen". Solche zahlen sind nicht ganze zahlen und können nicht analysiert werden durch Integer.toString. Sie müssen behandelt werden, entweder als Gleitkommazahl (float oder double) oder als BigDecimal.