如何将parseInt用于double?

时间:2012-09-24 01:55:32

标签: java

我的程序收到一些输入(String)。输入可能是double的形式,如"1.5"。但我想将其转换为integer,因此我最终只能使用1

首先,我试过这个:

Integer.parseInt(someString);

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

所以我想也许Integer类可以从integer创建double。所以我决定创建一个double,然后将其设为int,如下所示:

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

但显然有

  

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

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

5 个答案:

答案 0 :(得分:7)

将任何数字解析为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将丢弃任何小数而不进行舍入。

答案 1 :(得分:4)

使用铸造。

double val = Double.parseDouble(someString);  
int intVal = (int) Math.floor(val);   

答案 2 :(得分:2)

我认为DoubleDouble.parseDouble一致。所以只需使用:

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

答案 3 :(得分:1)

尝试,

int no= new Double(string).intValue();

答案 4 :(得分: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);

}