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
Spring Boot 排除某个类加载注入IOC的操作
Aug 02 Java/Android
Java移除无效括号的方法实现
Aug 07 Java/Android
idea以任意顺序debug多线程程序的具体用法
Aug 30 Java/Android
Android自定义ScrollView实现阻尼回弹
Apr 01 Java/Android
Java中Quartz高可用定时任务快速入门
Apr 03 Java/Android
Flutter集成高德地图并添加自定义Maker的实践
Apr 07 Java/Android
零基础学java之带返回值的方法的定义和调用
Apr 10 Java/Android
Java Spring Lifecycle的使用
May 06 Java/Android
Java异常体系非正常停止和分类
Jun 14 Java/Android
Spring Cloud OpenFeign模版化客户端
Jun 25 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实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
phpmyadmin下载、安装、配置教程
2017/05/16 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
python利用beautifulSoup实现爬虫
2014/09/29 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
初二政治教学反思
2014/01/12 职场文书
档案接收函
2014/01/13 职场文书
电工工作职责范本
2014/02/22 职场文书
自主招生教师推荐信
2014/05/10 职场文书
答谢会策划方案
2014/05/12 职场文书
读书月活动方案
2014/05/22 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
大学生团日活动总结
2015/05/06 职场文书
庆七一主持词
2015/06/29 职场文书
清明节主题班会
2015/08/14 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
python单元测试之pytest的使用
2021/06/07 Python
redis缓存存储Session原理机制
2021/11/20 Redis