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实现多线程聊天室
Jun 26 Java/Android
SpringBoot实现异步事件驱动的方法
Jun 28 Java/Android
Java 数组内置函数toArray详解
Jun 28 Java/Android
每日六道java新手入门面试题,通往自由的道路
Jun 30 Java/Android
解决Jenkins集成SonarQube遇到的报错问题
Jul 15 Java/Android
SpringBoot实现quartz定时任务可视化管理功能
Aug 30 Java/Android
Java使用JMeter进行高并发测试
Nov 23 Java/Android
Java并发编程之原子性-Atomic的使用
Mar 16 Java/Android
Java 超详细讲解IO操作字节流与字符流
Mar 25 Java/Android
Android Flutter实现图片滑动切换效果
Apr 07 Java/Android
Android在Sqlite3中的应用及多线程使用数据库的建议
Apr 24 Java/Android
Spring IOC容器Bean的作用域及生命周期实例
May 30 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添加xml文档内容的方法
2015/01/23 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
深入理解JSON数据源格式
2014/01/10 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
简单的三步vuex入门
2018/05/20 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
Python最长公共子串算法实例
2015/03/07 Python
python调用fortran模块
2016/04/08 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
pycharm修改file type方式
2019/11/19 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
岗位职责风险防控
2014/02/18 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
项目合作意向书
2015/05/08 职场文书
不同意离婚代理词
2015/05/23 职场文书
升学宴祝酒词
2015/08/11 职场文书
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js