检查Java的十进制格式是否正确
我正在用java创建一个预算程序,需要检查用户是否输入了有效的美元金额,特别是小数点后2位。关于如何做到这一点,没有任何规范 这是我目前的尝试,但逻辑是错误的检查Java的十进制格式是否正确,java,decimalformat,Java,Decimalformat,我正在用java创建一个预算程序,需要检查用户是否输入了有效的美元金额,特别是小数点后2位。关于如何做到这一点,没有任何规范 这是我目前的尝试,但逻辑是错误的 aExpense5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String desc = aExpense3.getText(); String va
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");
}
}
});
aExpense5.addActionListener(新ActionListener()
{
已执行的公共无效操作(操作事件e)
{
字符串desc=aExpense3.getText();
字符串值=aExpense4.getText();
双fValue=0;
尝试
{
fValue=Double.valueOf(值);
}
catch(NumberFormatException d)
{
showMessageDialog(null,“无效数字1”);
}
双D值=(F值*10)%10;
如果(d值尝试以下操作:
if (fValue*100 == (int)(fValue*100)) {
//fValue had 2 decimal places or less
}
如果fValue=0.11
那么fValue*100=11
。那么你就得到了11==(int)11
,它是真的
如果fValue=0.111
那么fValue*100=11.1
。那么您将得到11.1==(int)11.1
,它是false
尝试以下操作:
if (fValue*100 == (int)(fValue*100)) {
//fValue had 2 decimal places or less
}
如果fValue=0.11
那么fValue*100=11
。那么你就得到了11==(int)11
,它是真的
如果fValue=0.111
,那么fValue*100=11.1
。因此,您可以使用11.1==(int)11.1
,这是false
您可以使用正则表达式:
if (value.matches("\\d*\\.\\d\\d")) {
// the number string has two decimal places
}
此正则表达式允许可选的整数部分,“.05”将匹配。您可以使用正则表达式:
if (value.matches("\\d*\\.\\d\\d")) {
// the number string has two decimal places
}
此正则表达式允许可选的整数部分,“.05”将匹配