在Java中,有三种方法能够将float转换为long或int,但咱们只关注long数据类型部分。学习
将float数据类型转换为long值的第一种方法是将auto-box float原语转换为float对象并调用longValue()方法。spa
这是一种更结构化的方法,由于其余方法只是简单地将float转换为long或int以去掉小数点。code
也能够按照如下提示编写Java程序,经过将long方法替换为对应的int方法,将float转换为int。对象
另外,还可使用Math.round()而后将其转换回long数据类型。it
第二种方法是最简单的,若是只是去掉小数点后的数字,但若是须要四舍五入,那么第三种方法是最好的将float数据类型转换为long。ast
在本文中,将学习在Java中执行float到long转换的三种方法。class
在Java中将float转换为long的3种方法 方案一- Casting变量
Java支持类型转换,它是将一种数据类型转换为另外一种数据类型的,但只能将较高的值转换为较低的值。因为float的范围比long长,所以可使用类型转换将其转换为long,以下所示:数据类型
<float number = 444.33f;
long aValue = (long) number; // 444>
复制代码
它不会作任何事情,只是丢弃小数点后的值,所以将在fromFloat变量中获得3的值 。float
若是想把float转换成 int,那么你应该把float转换成整型数,而不是转换成long型数,这是最简单的转换方法。
解决方案2 - Float.longValue
将float转换为long的另外一种方法是首先将float值自动装入Float包装对象,而后调用Float.longValue() 方法。此方法在内部将浮点值转换为long,如上图和下面的代码所示:
<public long longValue(){
return(long)value;
}>
复制代码
如下是如何使用此方法进行转换:
<Float PIE = 3.14f;
long fromFloat = PIE.longValue();>
复制代码
当你具备Float对象而不是float原始值时,此方法更合适。
解决方案3 - Math.round和Casting
有时转换并不像丢弃小数点后的内容那样简单。可能须要先进行舍入,而后再进行转换。若是是这种状况,那么可使用Math.round()方法先进行舍入,再进行类型转换,将double转换为long,Math.round()方法返回一个double值。下面是实现这种转换的示例代码:
<// 使用Math.round()并强制转换为long
float points = 333.322f;
long rounded = Math.round(points);
System.out.printf("float : %f, long : %d %n", points, rounded);
points = 333.922f;
rounded = Math.round(points);
System.out.printf("float : %f, long : %d %n", points, rounded);
Output : float : 333.321991, long : 333 float : 333.921997, long : 334>
复制代码
能够看到舍入的效果,在第一个示例中,float是向下舍入的,这就是为何转换的long值是333,而在第二个示例中它被舍入,这就是为何long值为334.
Java程序将float转换为long数据类型 下面代码所示,它结合了三种方法将float转换为long。能够看到它们是如何工做的,并学习如何执行另外一个相似的转换技术,如float to int,short或byte或double to long,int,short和byte。
</**
* 用于在Java中将float转换为long
*
* @author Javarevisited
*/
public class FloatToLongConverter{
public static void main(String[] args) {
// Autobox浮动到Float而后调用Float.longValue();
Float PIE = 3.14f;
long fromFloat = PIE.longValue();
System.out.printf("float value %f, long value %d %n", PIE, fromFloat);
// 简单的类型转换来消除小数
float number = 444.33f;
long aValue = (long) number;
System.out.printf("float value %f, after casting into long %d %n", number, aValue);
// 使用Math.round()并将其转换回long
float points = 333.322f;
long rounded = Math.round(points);
System.out.printf("float : %f, long : %d %n", points, rounded);
}
}
Output :
float value 3.140000, long value 3
float value 444.329987, after casting into long 444
float : 333.321991, long : 333 >
复制代码
这就是如何在Java中将float转换为long数据类型。若是你只是删除十进制值,则类型转换是最简单的方法。这不是在Java中舍入数字的惟一方法,但它适用于大多用途。