我有兴趣拥有以下getNumberOfDecimalPlace功能:
System.out.println("0 = " + Utils.getNumberOfDecimalPlace(0)); // 0
System.out.println("1.0 = " + Utils.getNumberOfDecimalPlace(1.0)); // 0
System.out.println("1.01 = " + Utils.getNumberOfDecimalPlace(1.01)); // 2
System.out.println("1.012 = " + Utils.getNumberOfDecimalPlace(1.012)); // 3
System.out.println("0.01 = " + Utils.getNumberOfDecimalPlace(0.01)); // 2
System.out.println("0.012 = " + Utils.getNumberOfDecimalPlace(0.012)); // 3
Run Code Online (Sandbox Code Playgroud)
我可以getNumberOfDecimalPlace通过使用来了解如何实施BigDecimal?
以下代码无法按预期工作:
public static int getNumberOfDecimalPlace(double value) {
final BigDecimal bigDecimal = new BigDecimal("" + value);
final String s = bigDecimal.toPlainString();
System.out.println(s);
final int index = s.indexOf('.');
if (index < 0) …Run Code Online (Sandbox Code Playgroud) 我以为我可以通过以下方式轻松完成此任务:
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位小数是好的.
任何提示表示赞赏!谢谢!
编辑:感谢您的所有快速评论!这解决了我的问题,我非常感谢额外的信息,为什么它不起作用.谢谢!