再回首,Java温故知新(四):Java基本数据类型之浮点型

  Java作为一种强类型语言,意味着每一个变量都会有特定的类型,Java共有8种基本类型,其中有4种整型(byte、short、int、long)、两种浮点型(float、double)、1种字符型(char)和一种布尔型(boolean),值得注意的是,虽然字符串String非常常用,但是它却不属于基本类型。

  二、浮点型(接上篇整型)

  浮点型表示有小数部分的数值,java中包括float和double两种浮点型数据,float被称为单精度浮点数,而double被称为双精度浮点数。根据Float类的源码可以得知,Float的最大值为0x1.fffffeP+127f(3.4028235e+38f),最小值为0x0.000002P-126f(1.4e-45f),长度为4个字节;而double精度是float的两倍,最大值为0x1.fffffffffffffP+1023(1.7976931348623157e+308),最小值为0x0.0000000000001P-1022(4.9e-324),长度为8个字节。

  由于float的有效位数只有6~7位,不能满足日常开发工作中的需求,所以在开发过程中大部分使用double型数据,而写法上float型数据需要在数值后加F或f,例如2.13F和3.14f,而浮点型默认则为double型,例如2.13和3.14,当然也可以在后边加上D或者d。在十六进制表示中,浮点型的写法是0x1.****p*,原因推测是因为e是十六进制中的数字表示,所以用p来替换。

  另外值得注意的是,浮点型数据不适用于禁止出现舍入误差的金融计算中,主要是因为浮点型数值采用二进制系统表示,所以无法精确的表示分数,在这种不要不含误差的情况下建议使用BigDecimal类型。

  阅读源码时发现了个比较有意思的地方:

  isNaN(),这个方法貌似没啥用啊,API说明参数是非数字的时候返回true,可是如果参数是非数字的话会报编译错误。

static public boolean isNaN(double v) {
    return (v != v);
}

  

时间: 2024-10-20 06:49:16

再回首,Java温故知新(四):Java基本数据类型之浮点型的相关文章

Java进阶 四 Java反射TypeToken解决泛型运行时类型擦除问题

在开发时,遇到了下面这条语句,不懂,然习之. private List<MyZhuiHaoDetailModel> listLottery = new ArrayList<MyZhuiHaoDetailModel>(); Gson gson=new Gson(); JSONObject object=new JSONObject(callbackValue); listLottery =  gson.fromJson(object.getString("lists&quo

Java进阶(四)Java反射TypeToken解决泛型运行时类型擦除的问题解决

在开发时,遇到了下面这条语句,不懂,然习之. private List<MyZhuiHaoDetailModel> listLottery = new ArrayList<MyZhuiHaoDetailModel>(); Gson gson=new Gson(); JSONObject object=new JSONObject(callbackValue); listLottery =  gson.fromJson(object.getString("lists&quo

Java随笔四---Java异常

1.throw语句:Java编译器在执行throw语句时,会立即停止常规的程序执行,开始寻找能够捕获或处理异常的异常处理程序: 2.异常处理程序使用try/catch/finally编写. 3.如果当前代码块有异常处理程序,则编译器会退出这个代码块,开始执行异常处理代码,而异常处理程序执行完毕后,编译器会继续执行处理程序后的语句.如果当前代码块没有适当的处理程序,则会在外层代码中查找.如果没有,根据记法结构不断向上冒泡,直到main()方法,如果还是没有则打印一个错误消息和堆栈跟踪并退出. 4.

再回首,Java温故知新&mdash;&mdash;开篇说明

不知不觉在IT界从业2年了,两年时间足够一个人成长很多,当然也会改变很多事.在这两年时间里,随着对技术的深入了解,知识面的拓展以及工作难度的增大,渐渐的感觉自己技术方面根基不稳,多数问题也只是做到知其然而已.最近打算利用晚上的自由时间再学习一遍Java,所以入手了一本Java经典书籍——<Java核心技术 卷Ⅰ>.而博客也打算开始<再回首,Java温故知新>系列记录自己学习过程中一些要点,希望自己通过这次的学习不仅可以做到知其然,也能做到知其所以然,同时也希望这系列博客可以帮到一些

再回首,Java温故知新(十一):Java反射

最近继续回顾Java基础,进行到了Java反射这一部分,个人感觉这部分应该算是Java的高级特性了,在日常开发中使用的并不多,应用人员主要是工具构建人员,所以这次学习中以了解为主,Java反射主要应用在工具型项目的开发中,例如Spring. 在程序运行期间,JRE会为所有的对象创建一个类型标识,保存这些信息的类就是Class类,反射所有的功能都是围绕这个类来实现的,获取方法有以下几种: 1.new Date().getClass(); 2.Date.class; 3.Class.forName(

JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://blog.csdn.net/m366917 我们来继续学习多线程 Lock锁的使用 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock Lock void lock():获取锁 v

再回首Java第三天

JDK(Java SE Development Kit) 即Java标准版开发包,提供了编译.运行Java程序所需的各种工具和资源包括Java编译器,Java运行时环境,以及常用的Java类库. JRE(Java Runtime Environment) 即Java运行时环境,包含了JVM.类加载器.字节码校验器及大量的基础类库. Java运行时数据区分为:1.程序计数器 2.Java栈 3.本地方法栈 4.方法区 5.堆 程序计数器占用小部分内存区域,程序通过它的值寻找要执行的语句的字节码,由

Java基础一:基本数据类型

一.八种基本数据类型 1.整数类型 ①byte 占一个字节. 常用作缓冲数组. ②short 占两个字节 . ③int 占四个字节. 最常用. ④long 占8个字节.注意long类数值后面有一个后缀L. 注意:*Java没有无符号(unsigned)整数. *所有的数值类型所占据的字节数与平台无关,保证了可移植性. 2.浮点类型 ①float 占四个字节.后缀带有一个F.例:float f=3.4L; ②double 占8个字节.默认是double类型.例:3.14 注意:*double的精度

Java 第二章 变量 、数据类型和运算符 笔记

Java 第二章 变量 .数据类型和运算符 一.变量:存储数据的一个基本单元. 二.变量的声明和赋值: 1)声明并赋值:数据类型 变量名=值;      例:int  price=1000; 2)声明.赋值分两步:数据类型 变量名;   例: int  price; 变量名=值;              price=1000; 三.数据类型2种: 1)基本数据类型8种: Byte 长度:-128~127(-2的7次方到2的7次方减1) Short   -2的15次方到2的15次方减1 Int

java虚拟机规范阅读(四)Java虚拟机指令集简介

Java 虚拟机的指令由一个字节长度的.代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成.虚拟机中许多指令并不包含操作数,只有一个操作码. 如果忽略异常处理,那 Java 虚拟机的解释器使用下面这个伪代码的循环即可有效地工作: do {   自动计算 PC 寄存器以及从 PC 寄存器的位置取出操作码;   if (存在操作数) 取出操作数;   执行操作码所定义的操作 } while (处理下一次循环); do { 自动计算