我的程序收到一些输入(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)
所以你有什么建议?这是否有单行?我想过制作一个删除点和后面所有字符的方法......但这听起来不是很酷.
解析任何数字都是安全的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将丢弃任何小数而不进行舍入.
使用铸造。
double val = Double.parseDouble(someString);
int intVal = (int) Math.floor(val);
Run Code Online (Sandbox Code Playgroud)