检查正确的十进制格式Java

时间:2013-11-24 22:43:15

标签: java decimalformat

我在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");
           }
     }
  });

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

if (value.matches("\\d*\\.\\d\\d")) {
    // the number string has two decimal places
}

此正则表达式允许可选的整数部分,“。05”将匹配。

答案 1 :(得分:0)

尝试类似:

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

如果fValue = 0.11fValue*100 = 11。所以你有11 == (int)11 true

如果fValue = 0.111fValue*100 = 11.1。所以你有11.1 == (int)11.1 false