9

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

首先,我试过这个:

Integer.parseInt(someString);

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

所以我想也许这个Integer类可以integerdouble. 所以我决定创建一个double然后把它变成一个int,像这样:

Integer.parseInt(Double.parseDouble(someString));

但显然有

没有找到适合 parseInt(double) 的方法

所以你有什么建议?有没有针对此的单行代码?我想过制作一种方法来删除点和它之后的所有字符......但这听起来不太酷。

4

5 回答 5

9

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

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

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

int intVal = (int) Double.parseDouble(someString);

因为从浮点值转换为 int 将丢弃任何小数而不四舍五入。

于 2012-09-24T02:00:51.390 回答
5

使用铸造。

double val = Double.parseDouble(someString);  
int intVal = (int) Math.floor(val);   
于 2012-09-24T02:02:34.020 回答
2

Double我猜你有Double.parseDouble. 所以只需使用:

int i = (int) Double.parseDouble(someString);
于 2012-09-24T02:01:45.353 回答
1

尝试,

int no= new Double(string).intValue();
于 2012-09-24T02:01:08.270 回答
1

试试这个:

1) 将字符串解析为 double 2) 从 double 转换为 int

public static void main(String[] args) {
    String str = "123.32";
    int i = (int) Math.floor(Double.parseDouble(str));
    System.out.println(i);

}
于 2012-09-24T02:03:45.807 回答