Java double转long有4种方法,它们分别是:
- 使用类型转换将double转换为long
- 使用Math.round()将double转换为long。
- 使用double.longValue()将double转换为long。
- 使用Long.parseLong()方法。
下面分别介绍这4种方式转换的例子。
1. 使用类型转换
使用类型转换的方式比较简单,就是在double类型的值前面用long关键字,但是它没有对double值进行四舍五入,而是直接截断了小数点后面的数字,如果结果想要更准确的精度,建议使用第二种方法Math.round()进行转换。
public class Double2LongExample {
public static void main(String args[]){
double d1=3.14, d2=9999.999;
long l1=(long)d1, l2=(long)d2;
System.out.println(l1+"\n"+l2);
}
}
输出:3
9999
9999
我们看到结果输出分别是3和9999,截断了小数0.14和0.999,接下来看第二种方式。
2.使用Math.round()方法
Math.round()方法是java的数学方法,看下面的例子。
public class Double2LongExample {
public static void main(String args[]){
double d1=3.14, d2=9999.999;
long l1=Math.round(d1), l2=Math.round(d2);
System.out.println(l1+"\n"+l2);
}
}
输出:3
10000
10000
从结果可以看到Math.round()方法对结果进行了四舍五入。
3. 使用Double.longValue()方法
这里介绍java的Double包装类方法,它和第一种方法相同,会截断小数位。
public class Double2LongExample {
public static void main(String args[]){
Double d1=3.14, d2=9999.999;
long l1=d1.longValue(), l2=d2.longValue();
System.out.println(l1+"\n"+l2);
}
}
输出:3
9999
9999
4. Long.parseLong()方法
parseLong()方法可以将字符串转换为long类型。所以我们需要将double类型转为字符串,不过得去掉小数点后面的小数,然后再使用Long.parseLong()方法即可。
public class Double2LongExample {
public static void main(String args[]){
double d=3.1415926;
String s=String.valueOf(d);
//去掉小数点后面的小数
int i=s.indexOf('.');
s=s.substring(0, i==-1 ? s.length() : i);
long l=Long.parseLong(s);
System.out.println(l);
}
}
输出:3
方法4多了一个步骤。