代码之家  ›  专栏  ›  技术社区  ›  Daniel C. Sobral

如何在Java中使用特定的语言环境将字符串转换为Double?

  •  35
  • Daniel C. Sobral  · 技术社区  · 17 年前

    我想把一些作为字符串的数字转换成双精度数字,但这些数字不是在美国标准语言环境中,而是在另一个语言环境中。我该怎么做?

    8 回复  |  直到 17 年前
        1
  •  67
  •   Community Mohan Dere    6 年前

    尝试 java.text.NumberFormat . 从Javadocs:

    要设置不同语言环境的数字格式,请在对getInstance的调用中指定该数字。

    NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
    

    您还可以使用NumberFormat解析数字:

    myNumber = nf.parse(myString);
    

    parse() 返回一个 Number double myNumber.doubleValue() :

        double myNumber = nf.parse(myString).doubleValue();
    

    注意 永远不会回来 null ,因此这不会导致 NullPointerException parse 抛出支票 ParseException 如果失败了。

    编辑: 我最初说有另一种方法可以转化为 双重的 Double NumberFormat 正在使用(根据 getInstance ),它将始终返回一个 双重的 . 但是 DJClayworth parse(String, ParsePosition) (被称为 parse(String) )说 Long 双重的 不安全,不应尝试!

        2
  •  7
  •   Jasper Floor    17 年前

    NumberFormat是一种方法,但您应该注意它的特性,当您的数据不到100%正确时,它会突然出现。

    http://www.ibm.com/developerworks/java/library/j-numberformat/index.html

    如果你的输入是可信的,那么你就不必担心了。

        3
  •  5
  •   lytwaytLaz    12 年前

    只是学习java和编程。我也有类似的问题。在我的教科书中发现了类似的内容:

    Scanner sc = new Scanner(string);
    double number = sc.nextDouble();
    

    我这样解决了我的问题。也许这可以解决上述问题,而不是解析?

    现在你们都可以把我撕成碎片了;)

        4
  •  4
  •   unwind    17 年前

    你用的是 NumberFormat . Here 这是一个我认为正确的例子。

        5
  •  2
  •   Roland Ewald    17 年前

        6
  •  2
  •   adrian.tarau    17 年前

    使用NumberFormat.getNumberInstance(区域设置)

        7
  •  1
  •   Fortega    17 年前

    你知道是哪一个地方吗?然后你可以用

    DecimalFormat format = DecimalFormat.getInstance(theLocale);
    format.parse(yourString);
    

    这甚至适用于科学符号、带有百分号的字符串或带有货币符号的字符串。

        8
  •  -2
  •   lucian.pantelimon    13 年前

    以下是您如何使用 parseDouble 转换 String Double :

    import java.io.BufferedReader;
    
    import java.io.IOException;
    
    import java.io.InputStreamReader; 
    
    public class doubleExample {
    
            public static void main(String[] args) {
    
                    Double myDouble = new Double("0");
                    System.out.println("Please enter a number:");
    
                    try
                    {
                            //get the number from console
                            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                            myDouble = Double.parseDouble(br.readLine());
                    }
                    //if invalid value was entered
                    catch(NumberFormatException ne)
                    {
                            System.out.println("Invalid value" + ne);
                            System.exit(0);
                    }
        catch(IOException ioe)
                    {
                            System.out.println("IO Error :" + ioe);
                            System.exit(0);
                    }
    
                    System.out.println("Double value is " + myDouble);
            }
    }
    
    推荐文章