如何检查字符串是数字正数

时间:2012-01-06 11:00:11

标签: java parsing floating-point

如何检查字符串是数字正数,可能是逗号作为小数分隔符和最多两位小数。

实施例

10.25是真的 10.2是真的 10.236是假的theres 3十进制 10.dee是假的

7 个答案:

答案 0 :(得分:5)

或者您可以使用此正则表达式

^[0-9]*([,]{1}[0-9]{0,2}){0,1}$

如果你想要逗号和点作为允许的分隔符,那么

^[0-9]*([\.,]{1}[0-9]{0,2}){0,1}$

答案 1 :(得分:4)

如果字符串表示负数,那么无论使用的精度,数字格式或小数分隔符如何,它都必须以减号为前缀:

if(string.equals("0.0") || !string.startsWith("-"))  {
    //string is positive
}

答案 2 :(得分:3)

要检查数字,请使用:

Double number = Double.parseDouble(string);
return number > 0;

**更新:

对于逗号作为分隔符,您可以使用以下内容:

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse(string);
double d = number.doubleValue();
return number > 0;

答案 3 :(得分:0)

我的建议: 首先转换为双倍。那将测试数字。 如果失败了; 转换句点中的最后一个逗号(indexOf,replace)。 然后再转换。

为了确保你最多有2个小数位 - 在DecimalFormat中有它的功能...... 但对于替代方案,请在此处查看此问题。 Rounding a double to 5 decimal places in Java ME

双重转换并存储到2位小数后,您可以检查它是否为负数。

答案 4 :(得分:0)

获取数字符号的正确方法是使用Math lib提供的signum

Math.signum(yourDouble);
  

返回参数的signum函数;如果参数为零,则为零;如果参数大于零,则为1.0;如果参数小于零,则为-1.0

答案 5 :(得分:0)

另一种选择是使用BigDecimal:

import java.math.BigDecimal;

public class TestBigDecimal2 {

    public static void main(String[] args) {
        String[] values = { "10.25", "-10.25", "10.2", "10.236", "10.dee" };
        for(String value : values) {
            System.out.println(value + " is valid: " + checkValid(value));
        }
    }

    private static boolean checkValid(String value) {
        try {
            BigDecimal decimal = new BigDecimal(value);
            return decimal.signum() > 0 && decimal.scale() < 3;
        }
        catch (NumberFormatException e) {
            return false;
        }
    }
}

答案 6 :(得分:0)

使用 如果是正整数则返回true,否则返回false。

public static boolean isPositiveInteger(String str) {

    if (str == null) {
        return false;
    }
    int length = str.length();
    if (length == 0) {
        return false;
    }
    if (str.charAt(0) == '-') {
            return false;
    }
    for (int i = 0; i < length; i++) {
        char c = str.charAt(i);
        boolean isDigit = (c >= '0' && c <= '9');
        if (!isDigit) {
            return false;
        }
    }
    return true;
}