在Java中如何将float转换为long或int数据类型?
2019-03-10 11:52:41来源:博客园 阅读 ()
在Java中,有三种方法可以将float转换为long或int,但我们只关注long数据类型部分。
将float数据类型转换为long值的第一种方法是将auto-box float原语转换为float对象并调用longValue()方法。
这是一种更结构化的方法,因为其他方法只是简单地将float转换为long或int以去掉小数点。
也可以按照以下提示编写Java程序,通过将long方法替换为对应的int方法,将float转换为int。
另外,还可以使用Math.round()然后将其转换回long数据类型。
第二种方法是最简单的,如果只是去掉小数点后的数字,但如果需要四舍五入,那么第三种方法是最好的将float数据类型转换为long。
在本文中,将学习在Java中执行float到long转换的三种方法。
在Java中将float转换为long的3种方法
方案一- Casting
Java支持类型转换,它是将一种数据类型转换为另一种数据类型的,但只能将较高的值转换为较低的值。由于float的范围比long长,因此可以使用类型转换将其转换为long,如下所示:
float number = 444.33f;
long aValue = (long) number; // 444
它不会做任何事情,只是丢弃小数点后的值,因此将在fromFloat变量中得到3的值 。
如果想把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中舍入数字的唯一方法,但它适用于大多用途。
如果你想更快、更系统的学习,快来加入群聊,里面有阿里、百度面试试题、Java工程化、高性能及分布式、微服务、性能调优Spring、MyBatis,Netty源码分析等知识点的讲解【Java架构师资源共享群】(群号142019080),直接点击链接加群。https://jq.qq.com/?_wv=1027&k=5lXBNZ7
原文链接:https://www.cnblogs.com/hoober/p/10490017.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:服务之间的通信
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash