如何做一个十进制数的Integer.parseInt()?

Java代码如下:

String s = "0.01"; int i = Integer.parseInt(s); 

然而,这是抛出一个NumberFormatException …什么可能会出错?

0.01不是一个整数(整数),所以你当然不能把它parsing为一个。 改为使用Double.parseDoubleFloat.parseFloat

 String s = "0.01"; double d = Double.parseDouble(s); int i = (int) d; 

例外的原因是整数不包含有理数(=基本上是分数)。 所以,试图将0.3parsing0.3 int是无稽之谈。 doublefloat数据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();