我正在用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
。