如何为十进制数做Integer.parseInt()?

Kev*_*oyd 67 java parsing integer

Java代码如下:

String s = "0.01";
int i = Integer.parseInt(s);
Run Code Online (Sandbox Code Playgroud)

然而,这是抛出一个NumberFormatException ...可能会出错?

Mar*_*aux 89

String s = "0.01";
double d = Double.parseDouble(s);
int i = (int) d;
Run Code Online (Sandbox Code Playgroud)

异常的原因是整数不包含有理数(=基本上是分数).因此,尝试解析0.3为int是无稽之谈.A doublefloat数据类型可以包含有理数.

该方法的Java蒙上了double一个int由完成由向零取整去掉小数点后面的部分.

int i = (int) 0.9999;
Run Code Online (Sandbox Code Playgroud)

i 将零.

  • 你的演员阵容将完全丢失部分信息.我不确定提出建议是个好主意. (2认同)
  • @Joren:我知道,但是他想要一个整数(如果我检查他的代码) (2认同)

Jor*_*ren 61

0.01不是整数(整数),所以你当然不能把它解析为一个.使用Double.parseDoubleFloat.parseFloat代替.


ada*_*ost 27

使用,

String s="0.01";
int i= new Double(s).intValue();
Run Code Online (Sandbox Code Playgroud)


Swa*_*nil 17

String s="0.01";
int i = Double.valueOf(s).intValue();
Run Code Online (Sandbox Code Playgroud)


Ray*_*ell 9

在Java中,这种转换实际上是非常不直观的

以下面的字符串为例:"100.00"

C:至少自1971年以来一个简单的标准库函数(名称`atoi`来自哪里?)

int i = atoi(decimalstring);
Run Code Online (Sandbox Code Playgroud)

Java:Double(或Float)解析的强制通过,然后是强制转换

int i = (int)Double.parseDouble(decimalstring);
Run Code Online (Sandbox Code Playgroud)

Java肯定有一些奇怪的东西