相关疑难解决方法(0)

用逗号作为小数分隔符的parseDouble的最佳方法是什么?

以下是导致Exception:

String p="1,234";
Double d=Double.valueOf(p); 
System.out.println(d);
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法来解析"1,234"得到1.234:p = p.replaceAll(",",".");

java

137
推荐指数
5
解决办法
16万
查看次数

将字符串转换为Double - Java

将带逗号的字符串数字(例如:835,111.2)转换为Double实例的最简单,最正确的方法是什么.

谢谢.

java format

25
推荐指数
3
解决办法
6万
查看次数

用于检查String是否包含数字*而没有*异常的Java库

我正在寻找一个方法,如果传递的字符串是有效数字(例如"123.55e-9"," - 333,556"),则返回一个布尔值.我希望只是做:

public boolean isANumber(String s) {
    try { 
        BigDecimal a = new BigDecimal(s); 
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

显然,该函数应使用状态机(DFA)来解析字符串,以确保无效示例不会欺骗它(例如"-21,22.22.2","33-2").你知道这个库是否存在吗?我真的不想自己写,因为这是一个明显的问题,我相信我会重新发明轮子.

谢谢,

缺口

java format numbers state-machine bigdecimal

8
推荐指数
1
解决办法
8632
查看次数

如何从字符串中获取数字?

我正在使用Java StreamTokenizer来提取字符串的各种单词和数字,但是遇到了一个问题,其中包含逗号的数字,例如10,567被读作10.0和567.

我还需要从可能出现的数字中删除所有非数字字符,例如$ 678.00应为678.00或-87应为87.

我相信这些可以通过whiteSpace和wordChars方法实现,但有没有人知道如何做到这一点?

目前基本的streamTokenizer代码是:

        BufferedReader br = new BufferedReader(new StringReader(text));
        StreamTokenizer st = new StreamTokenizer(br);
        st.parseNumbers();
        st.wordChars(44, 46); // ASCII comma, - , dot.
        st.wordChars(48, 57); // ASCII 0 - 9.
        st.wordChars(65, 90); // ASCII upper case A - Z.
        st.wordChars(97, 122); // ASCII lower case a - z.
        while (st.nextToken() != StreamTokenizer.TT_EOF) {
            if (st.ttype == StreamTokenizer.TT_WORD) {                    
                System.out.println("String: " + st.sval);
            }
            else if (st.ttype == StreamTokenizer.TT_NUMBER) {
                System.out.println("Number: " + st.nval);
            }
        }
        br.close(); 
Run Code Online (Sandbox Code Playgroud)

或者有人建议REGEXP来实现这一目标吗?我不确定REGEXP在这里是否有用,因为在从字符串中读取标记之后会发生任何parding. …

java string parsing numbers stringtokenizer

5
推荐指数
2
解决办法
3万
查看次数