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中的OPTIONAL
Jun 14 Java/Android
Java框架入门之简单介绍SpringBoot框架
Jun 18 Java/Android
Feign调用传输文件异常的解决
Jun 24 Java/Android
Java Socket实现多人聊天系统
Jul 15 Java/Android
java中用float时,数字后面加f,这样是为什么你知道吗
Sep 04 Java/Android
java多态注意项小结
Oct 16 Java/Android
maven依赖的version声明控制方式
Jan 18 Java/Android
关于EntityWrapper的in用法
Mar 22 Java/Android
java项目构建Gradle的使用教程
Mar 24 Java/Android
Java 超详细讲解十大排序算法面试无忧
Apr 08 Java/Android
Java实现简单小画板
Jun 10 Java/Android
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
Jul 07 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
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
详解vue项目构建与实战
2017/06/27 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
vue实现拖拽效果
2019/12/23 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
Python打包可执行文件的方法详解
2016/09/19 Python
django站点管理详解
2017/12/12 Python
Python netmiko模块的使用
2020/02/14 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
pytorch SENet实现案例
2020/06/24 Python
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
医学院护理专业应届生求职信
2013/11/12 职场文书
给民警的表扬信
2014/01/08 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
预备党员表决心的话
2015/09/22 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript