在Java中如何将float转换为long或int数据类型?

在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中舍入数字的惟一方法,但它适用于大多用途。

相关文章
相关标签/搜索