相关疑难解决方法(0)

使用BigDecimal确定小数位数

我有兴趣拥有以下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)

java

14
推荐指数
4
解决办法
4万
查看次数

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

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

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位小数是好的.

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

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

java decimal

4
推荐指数
2
解决办法
3816
查看次数

标签 统计

java ×2

decimal ×1