我以为我可以通过以下方式轻松完成此任务:
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)
尝试
if(inputTxtField.getText().indexOf(".") >= 0 && inputTxtField.getText().indexOf(".") < inputTxtField.getText().length() - 2){
Run Code Online (Sandbox Code Playgroud)
当原始文件中最后 2 个字符之前true有小数点时,就会出现这种情况。StringString
| 归档时间: |
|
| 查看次数: |
3816 次 |
| 最近记录: |