如何在Java中检查double变量是否超过两位小数?

Rum*_*utt 4 java decimal

我以为我可以通过以下方式轻松完成此任务:

double numInput;

numInput = Double.parseDouble(inputTxtField.getText());

if ((numInput * 100) % 1 != 0) {

// do something

}
Run Code Online (Sandbox Code Playgroud)

但是,我得到了各种奇怪的测试用例,例如:

false:2.11,2.5,2.6

true:2.22,2.3,2.2

我刚刚开始编程所以也许这是一个愚蠢的傻瓜,但我认为将双倍乘以100,然后在除以1时检查余数是否有效.目的是防止某人输入超过两位小数的数字.小于或等于2位小数是好的.

任何提示表示赞赏!谢谢!

编辑:感谢您的所有快速评论!这解决了我的问题,我非常感谢额外的信息,为什么它不起作用.谢谢!

And*_*eas 11

转换BigDecimal并检查scale:

double[] values = { 2.11, 2.5, 2.6, 2.22, 2.3, 2.2, 3.141 };
for (double value : values) {
    boolean fail = (BigDecimal.valueOf(value).scale() > 2);
    System.out.println(value + "  " + (fail ? "Fail" : "Pass"));
}
Run Code Online (Sandbox Code Playgroud)

产量

2.11  Pass
2.5  Pass
2.6  Pass
2.22  Pass
2.3  Pass
2.2  Pass
3.141  Fail
Run Code Online (Sandbox Code Playgroud)


cbe*_*der 3

尝试

if(inputTxtField.getText().indexOf(".") >= 0 && inputTxtField.getText().indexOf(".") < inputTxtField.getText().length() - 2){
Run Code Online (Sandbox Code Playgroud)

当原始文件中最后 2 个字符之前true有小数点时,就会出现这种情况。StringString