我怎么能让它接受浮点数

时间:2013-04-03 07:25:54

标签: java eclipse

我的问题是在代码中它不接受浮点数字 所以,我应该在代码部分进行任何更改,请建议我..

{ 线程“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)

// code part // int bill = Integer.parseInt(strArray [2] .trim());

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

// code part // boolean retVal = OTCVerification.getOTCVerificationObj()。verifyOtc(message);

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

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

4 个答案:

答案 0 :(得分:1)

  

输入字符串:“320.9”

     

at java.lang。 Integer.parseInt (未知来源)

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

如果输入可能不是机器格式的数字,那么您应该使用DecimalFormat.parse和适当的Locale来识别使用本地约定格式化的数字(例如欧洲部分地区的320,9)。

答案 1 :(得分:0)

好吧,如果你想要一个浮点数,请使用Double.parseDoublenew BigDecimal

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

如果您需要整数,请使用String#indexOf查找.,然后使用String#substring仅获取.之前的数字,并继续使用{{1} }}

Integer.parseInt

或者,正如Mike Samuel在下面的评论中指出的那样,使用int index = theString.indexOf('.'); if (index >= 0) { theString = theString.substring(0, index); } int target = Integer.parseInt(theString); 然后转换为Double.parseDouble

int

答案 2 :(得分:0)

Integer.parseInt(String s) 

用于将有效字符串转换为整数。该值应介于-2,147,483,648到2,147,483,647之间。它不接受任何浮点数。

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

答案 3 :(得分:0)

要转换“浮点数”,您还应该知道使用的NumberFormat。如果要转换字符串“320.9”,则在大多数区域设置中都可以。如果您的程序在“法语”机器上运行,则浮点数可能会显示为“320,9”。

Double.parse仅适用于“。” as delimiter(正确地说,它取决于sun.misc.FloatingDecimal.readJavaFormatString(String in))。所以,如果你可以依靠这个分隔符,你可以使用Double.parse

如果您必须处理这两种情况,可以使用以下内容:

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 !!