умножение десятичных чисел в Java - PullRequest
0 голосов
/ 11 марта 2012

У меня есть следующий код, который работает, когда я умножаю целые числа, однако, когда я пытаюсь умножить десятичные числа и отобразить ответ как десятичное число, я получаю ошибку

 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));

Будем благодарны за любые предложения о том, что я могу изменить или добавить, чтобы этот код работал с десятичными числами.

Ответы [ 6 ]

2 голосов
/ 11 марта 2012

BigDecimal может быть тем, что вы хотите.

 textField_Name.setText(
       new BigDecimal(textArea_price.getText())
       .multiply(new BigDecimal(textArea_quantity.getText())).toString());
1 голос
/ 11 марта 2012

Измените int/Integer на double/Double.

Обратите внимание, что double является неточным (например, 1.2 * 9 дает 10.799999999, когда должно быть 10.8).Попробуйте использовать BigDecimal, если требуется точность.

0 голосов
/ 12 марта 2012
float a = Float.parseFloat("121.12");
float b = Float.parseFloat("0.9");
float res = a*b;
String str = Float.toString(res);
0 голосов
/ 11 марта 2012

Я предполагаю, что вы используете термин "десятичное число", чтобы (ошибочно) ссылаться на числа, содержащие "десятичную точку". Такие числа не являются целыми числами и не могут быть проанализированы Integer.toString. Они должны обрабатываться как с плавающей запятой (с плавающей запятой или двойной) или как BigDecimal.

0 голосов
/ 11 марта 2012

Используйте Double.parseDouble() вместо Integer.parseInt().И используйте double тип переменных:

double num1 = Double.parseDouble(textArea.getText());

0 голосов
/ 11 марта 2012

Если вы ожидаете действительные числа в текстовых полях, тогда используйте double, а не int.

   double num1 = Double.parseDouble(textArea_price.getText());
...