繁体   English   中英

如何使用 if 语句检查 java 中的数字是否只有小数点后两位?

[英]How can I use an if statement to check if a number only has two digits after the decimal in java?

我目前只使用这个检查一个数字是否是一个浮点数

public boolean checkStringFloat(String str) {
    try{
        Float.parseFloat(str);
    }
    catch(NumberFormatException e){
        return false;
    }
    return true;
}

但我想使用 if 语句来检查它是否是带两位数的小数。 因此,例如:6.24、5.28、13242.31 之类的数字是允许的,但 5.234、1、0、4.235 之类的数字是不允许的。 我怎样才能做到这一点?

拆分字符串,并检查第二部分的长度。

"13242.31".split( "\\." )[ 1 ].length() == 2 

请参阅在 IdeOne.com 上实时运行的代码

boolean hasTwoDigitDecimalFraction = "13242.31".split( "\\." )[ 1 ].length() == 2 ;
System.out.println( hasTwoDigitDecimalFraction ) ;

真的

通过调用String#contains来验证您的输入,以确保它有一个 FULL STOP 字符。 并从.split检查数组的长度,以确保它正好有两个元素。

请注意,在世界许多地方,此类输入将使用逗号而不是句号作为分隔符: 13242,31

BigDecimal#scale

正如@TimBiegeleisen 所说,将BigDecimal与它的scale方法一起使用。

public boolean checkStringFloat(String str) {
    BigDecimal bigDecimal = new BigDecimal(str);
    if(bigDecimal.scale() == 2) {
       return true;
    } else {
       return false;
    }
}

我的大致思路如下,仅供参考 对字符串String indexOf('.')进行简单的归零操作开始,返回i, len= string.length 会发生以下情况:

  1. i=-1,表示没有小数点
  2. i=len-2,小数点后有两个字符,所以只需要判断这两个字符是否为数字
  3. i>=len || i<len-2 显然不是

您可以在“。”之后找到字符串的长度。 使用.substring()

if (str.substring(str.indexOf(".")).length() == 2) return true;
else return false;

我没有编辑器,但这应该可以正常工作。 如果没有,请尝试将 1 添加到 indexOf。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM