java中用float时,数字后面加f,这样是为什么你知道吗


Posted in Java/Android onSeptember 04, 2021

Java float 与 double 的区别

1、float是单精度浮点数

内存分配4个字节,占32位,有效小数位6-7位

double是双精度浮点数,内存分配8个字节,占64位,有效小数位15位

2、java中默认声明的小数是double类型的

如double d=4.0

如果声明: float x = 4.0则会报错,需要如下写法:float x = 4.0f或者float x = (float)4.0

其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义

3、对编程人员来而

double 和 float 的区别是double精度高,但double消耗内存是float的两倍,且double的运算速度较float稍慢。

Java float、double、long类型变量赋值添加f、d、L尾缀问题

1、添加尾缀说明 

我们知道Java在变量赋值的时候,其中float、double、long数据类型变量,需要在赋值直接量后面分别添加f或F、d或D、l或L尾缀来说明。

其中,long类型最好以大写L来添加尾缀,因为小写l容易和数字1混淆。

例如:

long lNum  = 1234L;
float fNum = 1.23f;
double dNum = 1.23d;

这是Java语法规定,不添加尾缀很容易引起编译器报错,并且程序可读性也会变差。

2、不添加尾缀也不会报错的情况  

Java语言中,整数直接量(例如:1、2、10等),JVM虚拟机是默认为int类型数据的。所以,当整数直接量赋给long、float或者double,而不添加尾缀,虚拟机也会直接将int类型数据自动转换为对应类型然后赋值。因为数据长度短的转换为长的并不会造成数据丢失,所以默认可以自动转换。   

例如:

long  lNum  = 5;   //不报错,因为int自动转换为long类型,不会报错
float fNum  = 7;   //不报错,因为int自动转换为float类型,不会报错
double dNum = 10;  //同上

  

但是,当浮点直接量(例如:1.2等),JVM虚拟机默认为double类型,如果直接赋值给float就会引起编译器报错。

float fNum  = 1.2; //报错,因为1.2虚拟机是默认为double类型,不能直接赋值给float类型变量
float fNew  = 1.3f;//正确,因为尾缀添加了f,即告诉了虚拟机1.3属于float类型变量

3、总结  

所以,当Java中遇到这三种类型变量需要赋直接量时候,最好都添加上相应的尾缀。这样不仅会防止编译器报错,也会增加程序的可读性。  

但是下面这种情况就算添加尾缀也是错的,因为尾缀仅是为了告诉虚拟机该直接数属于什么数据类型,而不能实现数据类型强制转换。

long lNum = 1.2L;      //错误,double类型数据不能直接赋值给long类型
long lNew = (long)1.2; //正确,double类型数据强制转换为long类型

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
Java新手教程之ArrayList的基本使用
Jun 20 Java/Android
SpringBoot集成Redis,并自定义对象序列化操作
Jun 22 Java/Android
Spring中bean的生命周期之getSingleton方法
Jun 30 Java/Android
聊聊Lombok中的@Builder注解使用教程
Nov 17 Java/Android
你知道Java Spring的两种事务吗
Mar 16 Java/Android
Spring Bean是如何初始化的详解
Mar 22 Java/Android
Android studio 简单计算器的编写
May 20 Java/Android
Spring JPA 增加字段执行异常问题及解决
Jun 10 Java/Android
java实现自定义时钟并实现走时功能
Jun 21 Java/Android
利用Java连接Hadoop进行编程
Jun 28 Java/Android
SpringBoot接入钉钉自定义机器人预警通知
Jul 15 Java/Android
Spring boot实现上传文件到本地服务器
Aug 14 Java/Android
SpringBoot实现quartz定时任务可视化管理功能
Aug 30 #Java/Android
logback 实现给变量指定默认值
Aug 30 #Java/Android
SpringMVC 整合SSM框架详解
Aug 30 #Java/Android
使用logback实现按自己的需求打印日志到自定义的文件里
Aug 30 #Java/Android
logback如何自定义日志存储
Aug 30 #Java/Android
idea以任意顺序debug多线程程序的具体用法
Aug 30 #Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 #Java/Android
You might like
PHP 常见郁闷问题答解
2006/11/25 PHP
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php 字符串函数收集
2010/03/29 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
python 图片去噪的方法示例
2019/07/09 Python
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
一套带网友答案的.NET笔试题
2016/12/06 面试题
外语系毕业生求职自荐信
2014/04/12 职场文书
白血病募捐倡议书
2014/05/14 职场文书
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫