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 相关文章推荐
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 Java/Android
详解Java实现数据结构之并查集
Jun 23 Java/Android
gateway与spring-boot-starter-web冲突问题的解决
Jul 16 Java/Android
mybatis中注解与xml配置的对应关系和对比分析
Aug 04 Java/Android
MyBatis-Plus 批量插入数据的操作方法
Sep 25 Java/Android
spring cloud eureka 服务启动失败的原因分析及解决方法
Mar 17 Java/Android
SpringBoot2零基础到精通之异常处理与web原生组件注入
Mar 22 Java/Android
Spring依赖注入多种类型数据的示例代码
Mar 31 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
Apr 13 Java/Android
一文搞懂Java中的注解和反射
Jun 21 Java/Android
Android实现图片九宫格
Jun 28 Java/Android
Java结构型设计模式之组合模式详解
Sep 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
一个简单实现多条件查询的例子
2006/10/09 PHP
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
php PDO异常处理详解
2016/11/20 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
js获取图片长和宽度的代码
2009/11/24 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
javascript实现连续赋值
2015/08/10 Javascript
angular分页指令操作
2017/01/09 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
python实现从wind导入数据
2019/12/03 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
恐龙的灭绝教学反思
2014/02/12 职场文书
跑操口号
2014/06/12 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
供用电专业求职信
2014/07/07 职场文书
离婚协议书怎么写
2014/09/12 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
预备党员介绍人意见
2015/06/01 职场文书
2019年思想汇报
2019/06/20 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python