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 Alibaba项目实战之nacos-server服务搭建过程
Jun 21 Java/Android
详解Java分布式事务的 6 种解决方案
Jun 26 Java/Android
MyBatis自定义SQL拦截器示例详解
Oct 24 Java/Android
OpenCV实现普通阈值
Nov 17 Java/Android
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
Jan 18 Java/Android
利用Sharding-Jdbc进行分库分表的操作代码
Jan 22 Java/Android
Java并发编程之原子性-Atomic的使用
Mar 16 Java/Android
Java十分钟精通进阶适配器模式
Apr 06 Java/Android
Android开发 使用文件储存的方式保存QQ密码
Apr 24 Java/Android
Java中生成微信小程序太阳码的实现方案
Jun 01 Java/Android
阿里面试Nacos配置中心交互模型是push还是pull原理解析
Jul 23 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
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
社区学雷锋活动策划方案
2014/01/30 职场文书
国贸专业求职信
2014/06/28 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
信用卡工资证明格式
2014/09/13 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
中学生打架检讨书
2014/10/13 职场文书
三峡导游词
2015/01/31 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
详解Go与PHP的语法对比
2021/05/29 PHP
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android