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 相关文章推荐
springboot如何初始化执行sql语句
Jun 22 Java/Android
Java基于字符界面的简易收银台
Jun 26 Java/Android
Java图书管理系统,课程设计必用(源码+文档)
Jun 30 Java/Android
SpringBoot集成Druid连接池连接MySQL8.0.11
Jul 02 Java/Android
SpringBoot快速入门详解
Jul 21 Java/Android
springboot中rabbitmq实现消息可靠性机制详解
Sep 25 Java/Android
深入解读Java三大集合之map list set的用法
Nov 11 Java/Android
Java 获取Word中所有的插入和删除修订的方法
Apr 06 Java/Android
Java 超详细讲解ThreadLocal类的使用
Apr 07 Java/Android
解决Springboot PostMapping无法获取数据的问题
May 06 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
Jun 25 Java/Android
Java使用HttpClient实现文件下载
Aug 14 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
处理单名多值表单的详解
2013/06/08 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
如何选择适合你的JavaScript框架
2017/11/20 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
python实现简单的TCP代理服务器
2014/10/08 Python
python 全文检索引擎详解
2017/04/25 Python
spyder常用快捷键(分享)
2017/07/19 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
pandas数据处理进阶详解
2019/10/11 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
表彰大会主持词
2014/03/26 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
班级出游活动计划书
2014/08/15 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
先进个人主要事迹范文
2015/11/04 职场文书