如何将parseInt用于double?

Vol*_*ort 8 java

我的程序收到一些输入(a String).很可能输入是a的形式double,如"1.5".但是我想把它转换成一个integer,所以我最终只能得到一个1.

首先,我试过这个:

Integer.parseInt(someString);
Run Code Online (Sandbox Code Playgroud)

但它不起作用 - 我假设它是因为.它无法解析它的点.

所以我认为也许Integer班级可以创建integer一个double.所以我决定创建一个double然后制作一个int,像这样:

Integer.parseInt(Double.parseDouble(someString));
Run Code Online (Sandbox Code Playgroud)

但显然有

找不到适合parseInt的方法(double)

所以你有什么建议?这是否有单行?我想过制作一个删除点和后面所有字符的方法......但这听起来不是很酷.

Yan*_*hon 7

解析任何数字都是安全的double,然后将其转换为另一种类型.像这样:

// someString = "1.5";
double val = Double.parseDouble(someString);  // -> val = 1.5;
int intVal = (int) Math.floor(val);           // -> intVal = 1;
Run Code Online (Sandbox Code Playgroud)

请注意,使用Java 7(未使用早期JVM进行测试,但我认为它也应该可以使用),这也会产生与上面相同的结果:

int intVal = (int) Double.parseDouble(someString);
Run Code Online (Sandbox Code Playgroud)

从浮动值转换为int将丢弃任何小数而不进行舍入.


Rav*_*ale 5

使用铸造。

double val = Double.parseDouble(someString);  
int intVal = (int) Math.floor(val);   
Run Code Online (Sandbox Code Playgroud)