我正在用Java创建预算程序,需要检查用户是否输入了有效的美元金额,特别是2个小数位。没有关于如何完成此操作的规范。

这是我目前的尝试,但逻辑错误

  aExpense5.addActionListener(new ActionListener()
  {
     public void actionPerformed(ActionEvent e)
     {
        String desc = aExpense3.getText();
        String value = aExpense4.getText();
        double fValue = 0;

        try
        {
           fValue = Double.valueOf(value);
        }
        catch (NumberFormatException d)
        {
           JOptionPane.showMessageDialog(null, "Invalid Number1");
        }
           double dValue = (fValue * 10) % 10;

           if (dValue <= 0)
           {
              updateExpenseList(desc, fValue);
           }
           else
           {
              JOptionPane.showMessageDialog(null,"invalid Number");
           }
     }
  });

最佳答案

尝试类似的东西:

if (fValue*100 == (int)(fValue*100)) {
    //fValue had 2 decimal places or less
}


如果为fValue = 0.11,则为fValue*100 = 11。因此,您将拥有11 == (int)11,即true

如果为fValue = 0.111,则为fValue*100 = 11.1。因此,您将拥有11.1 == (int)11.1,即false

09-27 18:34