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 相关文章推荐
Spring Data JPA使用JPQL与原生SQL进行查询的操作
Jun 15 Java/Android
Java并发编程之详解CyclicBarrier线程同步
Jun 23 Java/Android
解决ObjectMapper.convertValue() 遇到的一些问题
Jun 30 Java/Android
java实现对Hadoop的操作
Jul 01 Java/Android
Java Kafka 消费积压监控的示例代码
Jul 01 Java/Android
用Java实现简单计算器功能
Jul 21 Java/Android
Java spring单点登录系统
Sep 04 Java/Android
JavaWeb实现显示mysql数据库数据
Mar 19 Java/Android
Java 获取Word中所有的插入和删除修订的方法
Apr 06 Java/Android
Jmerte 分布式压测及分布式压测配置
Apr 30 Java/Android
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
Jun 01 Java/Android
SpringBoot详解自定义Stater的应用
Jul 15 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/10/09 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
详解angular element()方法使用
2017/04/08 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
微信内置浏览器图片查看器的代码实例
2019/10/08 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
python标准库os库的函数介绍
2020/02/12 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
PHP如何自定义函数
2016/09/16 面试题
高级护理实习生自荐信
2013/09/28 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
会议主持词
2014/03/17 职场文书
销售2014年度工作总结
2014/12/08 职场文书
汽车转让协议书
2015/01/29 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
Go使用协程交替打印字符
2021/04/29 Golang