有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我怎样才能让它接受浮点数

我的问题是代码不接受浮点数字 所以,如果我在代码部分做任何更改,请建议我

{ 线程“main”java中出现异常。lang.NumberFormatException:对于输入字符串:“320.9”

at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at org.lrap.otc.OTCVerification.verifyOtc(OTCVerification.java:26)

//代码部分//整数比尔=整数。parseInt(strArray[2].trim())

at org.lrap.main.Main.run(Main.java:68)

//代码部分//布尔retVal=OTCVerification。getOTCVerificationObj()。验证OTC(信息)

at org.lrap.main.Main.main(Main.java:111)

只是调用run函数 } 感谢所有帮助我的人。:-)


共 (4) 个答案

  1. # 1 楼答案

    要转换“浮点数字”,还应注意使用的^{}。如果要转换字符串“320.9”,则在大多数地区都可以。如果您的程序在“法语”机器上运行,则浮点数字可能会显示为“320,9”

    加倍。parse仅适用于“”作为分隔符(正确地说,它取决于sun.misc.FloatingDecimal.readJavaFormatString(String in))。所以,如果你可以依赖于这个定界符,你可以使用^{}

    如果必须同时处理这两种情况,可以使用以下方法:

    final String num = "320,9";
    final NumberFormat nf_french = NumberFormat.getInstance(Locale.FRENCH); // French Number Format (= xxx,yyy) 
    final double result_french = nf_french.parse(num).doubleValue(); // => 320.9
    final NumberFormat nf_us = NumberFormat.getInstance(Locale.US); // US Number Format (= xxx.yyy) 
    final double result_us = nf_us.parse(num).doubleValue(); // => 3209.0 !!
    
  2. # 2 楼答案

    For input string: "320.9"

    at java.lang.Integer.parseInt(Unknown Source)

    使用Double.parseDouble解析带有分数的数字。不是Integer.parseInt

    如果输入可能不是机器格式化的数字,那么您应该使用^{}和适当的语言环境来识别使用本地约定格式化的数字(例如在欧洲部分地区为320,9)

  3. # 3 楼答案

    Integer.parseInt(String s) 
    

    用于将有效字符串转换为整数。值应该介于-2147483648到2147483647之间。它不接受任何浮动点数

    要转换为浮点,可以使用Double.parseDouble or new BigDecimal.

  4. # 4 楼答案

    如果你想要一个浮点数,可以使用^{}^{}

    double target = Double.parseDouble(theString);
    // Or
    BigDecimal target = new BigDecimal(theString);
    

    如果需要整数,请使用^{}查找.,然后使用^{}仅获取.之前的数字,然后继续使用Integer.parseInt

    int index = theString.indexOf('.');
    if (index >= 0) {
        theString = theString.substring(0, index);
    }
    int target = Integer.parseInt(theString);
    

    或者,正如Mike Samuel在下面的评论中指出的,使用Double.parseDouble,然后转换到int

    int target = (int)Double.parseDouble(theString);