如何做一个十进制数的Integer.parseInt()?
Java代码如下:
String s = "0.01"; int i = Integer.parseInt(s);
然而,这是抛出一个NumberFormatException …什么可能会出错?
0.01不是一个整数(整数),所以你当然不能把它parsing为一个。 改为使用Double.parseDouble
或Float.parseFloat
。
String s = "0.01"; double d = Double.parseDouble(s); int i = (int) d;
例外的原因是整数不包含有理数(=基本上是分数)。 所以,试图将0.3
parsing0.3
int是无稽之谈。 double
或float
数据types可以保存有理数。
Java将double
转换为int
是通过将小数点分隔符后的部分向零舍去来完成的 。
int i = (int) 0.9999;
i
会零。
使用,
String s="0.01"; int i= new Double(s).intValue();
String s="0.01"; int i = Double.valueOf(s).intValue();
在Java中这种转换实际上是非常不直观的
以下面的string为例:“100.00”
C:至less自1971年以来,一个简单的标准库函数 ( atoi从哪里来的? )
int i = atoi(decimalstring);
Java:强制性通过Double(或Float)parsing,然后进行强制转换
int i = (int)Double.parseDouble(decimalstring);
Java肯定有一些奇怪的是它的袖子
使用这一个
int number = (int) Double.parseDouble(s);
使用Double.parseDouble(String a)
你正在寻找的不是一个整数,因为它不是一个整数。
使用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();