【问题标题】:multiplying decimal numbers in java在java中乘以十进制数
【发布时间】:2012-03-11 14:41:07
【问题描述】:

当我将整数相乘时,我有以下代码,但是当我尝试将十进制数相乘并将答案显示为十进制数时出现错误

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

感谢任何关于我可以更改或添加以使此代码与十进制数字一起使用的建议。

【问题讨论】:

  • 请说明你看到了什么错误,在哪一行。
  • (“整数”与“小数”是什么意思?)
  • 你知道,parseInt() 只能解析int,对吧?
  • 我收到的错误消息是 14:44.56 78[dbg] CShellExt::CShellException in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "12.34"跨度>
  • @HotLicks 他可能想解析浮点数..

标签: java integer decimal


【解决方案1】:

BigDecimal 可能是你想要的。

 textField_Name.setText(
       new BigDecimal(textArea_price.getText())
       .multiply(new BigDecimal(textArea_quantity.getText())).toString());

【讨论】:

  • 我正在尝试使用您在这里拥有的东西,但它强调了“valueof”部分,没有任何推荐的假设。你知道为什么会这样吗?
  • @FatmaTurk:注意拼写:valueOf()
  • @FatmaTurk 如果您在v 之后使用代码完成,它应该建议valueOf
  • @PeterLawrey 是的,它确实给了我建议,但是当我拥有其余代码时(当它完成时)我收到此错误消息 BigDecimal 类型中的方法 valueOf(long)不适用于参数(字符串)
  • 对不起,必须是new BigDecimal(string)
【解决方案2】:

int/Integer 更改为double/Double

请注意,double 是不精确的(例如,1.2 * 9 在应该是 10.8 时给出了 10.799999999)。如果需要准确,请考虑使用BigDecimal

【讨论】:

  • 我猜他会想要 BigDecimal,因为他在处理金钱问题。
【解决方案3】:

如果您希望文本字段中包含实数,请使用 double 而不是 int。

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

【讨论】:

    【解决方案4】:

    使用Double.parseDouble() 代替Integer.parseInt()。并使用double类型的变量:

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

    【讨论】:

      【解决方案5】:

      我的猜测是您使用术语“小数”来(错误地)指代包含“小数点”的数字。这样的数字不是整数,不能被 Integer.toString 解析。它们需要作为浮点数(float 或 double)或 BigDecimal 处理。

      【讨论】:

        【解决方案6】:
        float a = Float.parseFloat("121.12");
        float b = Float.parseFloat("0.9");
        float res = a*b;
        String str = Float.toString(res);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-12-03
          • 2018-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-02
          • 2020-03-21
          相关资源
          最近更新 更多