我的程序收到一些输入(String
)。输入可能是double
的形式,如"1.5"
。但我想将其转换为integer
,因此我最终只能使用1
。
首先,我试过这个:
Integer.parseInt(someString);
但它不起作用 - 我假设它是因为点.
无法解析它。
所以我想也许Integer
类可以从integer
创建double
。所以我决定创建一个double
,然后将其设为int
,如下所示:
Integer.parseInt(Double.parseDouble(someString));
但显然有
找不到适合parseInt(double)的方法
那么,你有什么建议?这是否有单行?我想过制作一个删除点和后面所有字符的方法......但这听起来不太酷。
答案 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)
我认为Double
与Double.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);
}