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异步之call future
Jun 14 Java/Android
Java实现简易的分词器功能
Jun 15 Java/Android
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 Java/Android
SpringBoot 拦截器妙用你真的了解吗
Jul 01 Java/Android
idea 在springboot中使用lombok插件的方法
Aug 02 Java/Android
解析mybatis-plus中的resultMap简单使用
Nov 23 Java/Android
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
Dec 06 Java/Android
RestTemplate如何通过HTTP Basic Auth认证示例说明
Mar 17 Java/Android
带你了解Java中的ForkJoin
Apr 28 Java/Android
Android开发手册Chip监听及ChipGroup监听
Jun 10 Java/Android
Java中的Kotlin 内部类原理
Jun 16 Java/Android
Spring Boot优化后启动速度快到飞起技巧示例
Jul 23 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与SQL注入攻击[一]
2007/04/17 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
PHP队列用法实例
2014/11/05 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
python中的格式化输出用法总结
2016/07/28 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
numpy.array 操作使用简单总结
2019/11/08 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
法国房车租赁网站:Yescapa
2019/08/26 全球购物
中学教师岗位职责
2013/11/26 职场文书
材料采购员岗位职责
2013/12/17 职场文书
20岁生日感言
2014/01/13 职场文书
企业总经理职责
2014/02/02 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
单位更名证明
2015/06/18 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python