Java代码如下:
String s = "0.01";
int i = Integer.parseInt(s);
然而,这会引发NumberFormatException ......可能出现什么问题?
答案 0 :(得分:80)
String s = "0.01";
double d = Double.parseDouble(s);
int i = (int) d;
异常的原因是整数不包含有理数(=基本上是分数)。因此,尝试将0.3
解析为int是无稽之谈。
double
或float
数据类型可以包含有理数。
Java将double
投射到int
的方式是通过删除小数点分隔符之后的部分,将其舍入为零来完成。
int i = (int) 0.9999;
i
将为零。
答案 1 :(得分:56)
0.01不是整数(整数),因此您当然无法将其解析为一个整数。请改用Double.parseDouble
或Float.parseFloat
。
答案 2 :(得分:24)
使用,
String s="0.01";
int i= new Double(s).intValue();
答案 3 :(得分:16)
String s="0.01";
int i = Double.valueOf(s).intValue();
答案 4 :(得分:9)
这种转换在Java中实际上是不太直观的
以下面的字符串为例:“100.00”
C:至少自1971年以来一个简单的标准库函数(Where did the name `atoi` come from?)
int i = atoi(decimalstring);
Java:Double(或Float)解析必须通过,然后是强制转换
int i = (int)Double.parseDouble(decimalstring);
Java肯定有一些奇怪的东西
答案 5 :(得分:3)
使用BigDecimal进行舍入:
String s1="0.01";
int i1 = new BigDecimal(s1).setScale(0, RoundingMode.HALF_UP).intValueExact();
String s2="0.5";
int i2 = new BigDecimal(s2).setScale(0, RoundingMode.HALF_UP).intValueExact();
答案 6 :(得分:3)
假设我们在字符串中使用整数。
String s =“100”; int i = Integer.parseInt(s); 要么 int i = Integer.valueOf(s);
但在您的问题中,您尝试进行更改的号码是整数
String s =“10.00”;
double d = Double.parseDouble(s);
int i =(int)d;
通过这种方式,您可以获得正在尝试获取该值的答案。
答案 7 :(得分:2)
使用Double.parseDouble(String a)
您要查找的内容不是整数,因为它不是整数。
答案 8 :(得分:2)
使用这个
int number = (int) Double.parseDouble(s);
答案 9 :(得分:0)
可能还有一个解决方案。
int number = Integer.parseInt(new DecimalFormat("#").format(decimalNumber))
示例:
Integer.parseInt(new DecimalFormat("#").format(Double.parseDouble("010.021")))
输出
10