java用不同的小数检查零

java用不同的小数检查零,java,Java,我需要检查从数据库中获取的值(字符串)是否为零(带任何小数)。 以下是一些示例 0.000 - true 0 - true 0.000000 - true 0.0000000000 - true 0.0000000001 - false 0.10 - false 有人能告诉我检查上述内容的简单方法吗?有不同的方法。第一个问题是,为什么要在第一位以字符串而不是大十进制的形式检索此值 要对照0检查值,可以执行以下操作: if (new BigDecimal(string).c

我需要检查从数据库中获取的值(字符串)是否为零(带任何小数)。
以下是一些示例

0.000 - true   
0 - true  
0.000000 - true  
0.0000000000 - true  
0.0000000001 - false  
0.10 - false

有人能告诉我检查上述内容的简单方法吗?

有不同的方法。第一个问题是,为什么要在第一位以
字符串
而不是
大十进制
的形式检索此值

要对照0检查值,可以执行以下操作:

if (new BigDecimal(string).compareTo(BigDecimal.ZERO) == 0) {
    // the String is 0, whatever its scale
}
compareTo
不考虑小数位数。然而,这将运行到内存中,因为字符串确实很大


另一种完全不同的方法是使用正则表达式,如@khelwood所评论的。

有不同的方法。第一个问题是,为什么要在第一位以
字符串
而不是
大十进制
的形式检索此值

要对照0检查值,可以执行以下操作:

if (new BigDecimal(string).compareTo(BigDecimal.ZERO) == 0) {
    // the String is 0, whatever its scale
}
compareTo
不考虑小数位数。然而,这将运行到内存中,因为字符串确实很大


另一种完全不同的方法是使用正则表达式,如@khelwood注释。

考虑将字符串与正则表达式匹配
0([.]0+)?
。使用
String#matches
来完成此操作

请注意,这需要在任何小数点之前正好有一个零

我通常不愿意使用正则表达式来比较数值,但我认为这里可以例外。这主要是因为(i)您已经有一个字符串,(ii)浮点类型的大小可能不足以准确解析数字,以及(iii)大十进制类型将执行不必要的解析和比较


请记住,有些地区使用
表示小数点,我的解决方案也不支持带符号的零。

请考虑将字符串与正则表达式
0([.]0+)?
匹配。使用
String#matches
来完成此操作

请注意,这需要在任何小数点之前正好有一个零

我通常不愿意使用正则表达式来比较数值,但我认为这里可以例外。这主要是因为(i)您已经有一个字符串,(ii)浮点类型的大小可能不足以准确解析数字,以及(iii)大十进制类型将执行不必要的解析和比较


请记住,有些地区使用
表示小数点,我的解决方案也不支持带符号的零。

最简单的方法之一是:

           String s ="0.0001";
           char c1 ='0'; 
           char c2 ='.';
           boolean result = true;
           int cnt =0;
            for(int i=0;i<s.length();i++){
               if(s.charAt(i)!=c1 || s.charAt(i)!=c2 ){
                 result = false;
                }
              }
           if(result == true)
             system.out.println("input is zero");
            else
             system.out.println("input is non-zero");
String s=“0.0001”;
字符c1='0';
字符c2=';
布尔结果=真;
int-cnt=0;

对于(int i=0;i而言,最简单的方法之一是:

           String s ="0.0001";
           char c1 ='0'; 
           char c2 ='.';
           boolean result = true;
           int cnt =0;
            for(int i=0;i<s.length();i++){
               if(s.charAt(i)!=c1 || s.charAt(i)!=c2 ){
                 result = false;
                }
              }
           if(result == true)
             system.out.println("input is zero");
            else
             system.out.println("input is non-zero");
String s=“0.0001”;
字符c1='0';
字符c2=';
布尔结果=真;
int-cnt=0;

对于(int i=0;i
str.matches(“0+(\\.0*)?”)
str.matches(“0+(\\.0*)?”)
我会为1添加+2。询问为什么字符串和2。使用compareTo。但我只能为1:pI添加+2。询问为什么字符串和2。使用compareTo。但我只能为+1:p