前言

作为一名java学习者,怎能不懂这些java基础中的基础呢?本文就带各位温顾温顾java浮点型、单精度浮点数、双精度浮点数。

浮点型

首先明确java中浮点型数据类型主要有:单精度float、双精度double

至于浮点型就是跟intstring类型差不多。都是数据类型

浮点型浮点型别给我整些花里胡哨的定义,浮点型简单来说就是表示带有小数的数据,而恰恰小数点可以在相应的二进制的不同位置浮动,可能是这样就被定义成浮点型了。不得不佩服这文化程度,定义个数据名称都这么有深度

浮点型常量 Java的实常数有两种表示形式:

1、 十进制数形式:由数字和小数点组成,且必须有小数点,如0.123 , 123.0

2、科学计数法形式:如:123e3123E3,其中eE之前必须有数字,且e或E后面的指数必须为整数(当然也包括负整数)。

科学计数法中的E

了解浮点型常量 Java的实常数有两种表示形式之后,很有必要给各位科普科普下科学计数法中E的面貌了~

E是指数的意思,E代表的英文是exponentE表示10的多少次方的意思

比如7.823E5 = 782300 这里E5表示10的5次方,再比如54.3E-2 = 0.543这里E-2表示10的-2次方

再补充一点(针对负次方理解

一个数的负几次方就是这个数的几次方的倒数。

比如: 2的负1次方=2的1次方分之一=1/2

比如: 3的负2次方=3的2次方分之一=1/9

单精度浮点数(float)

单精度浮点数在机内占4个字节、有效数字8位、表示范围:-3.40E+38 ~ +3.40E+38

在Java语言当中,所有的浮点型字面值 【V8提示】浮点型简单来说就是表示带有小数的数据 默认当做double类型来处理,要想该字面值当做float类型来处理,需要在字面值后面添加F/f,或者强制装换为float。具体如下代码:

 public static void main(String[] args) {
//3.10是浮点型,浮点型字面值默认当做double类型来处理,直接编译通过;
double d=3.10;
//3.10是浮点型,则必须加 F或者f,若没加,直接编译不通过,会报错“损失精度”
float f=3.10; //编译出错会报错“损失精度”
// 解决办法:
// 第一种方式:强制类型转换
float f1=(float)5.1;
// 第二种方式:没有类型转换;
folat f2=5.1f;
}

再来看看下面的测试,结果肯定十之八九会在意料之外,哈哈~

 public static void main(String[] args) {
float a = 12345678.90123456789f;
double b=0.12345678901234567890;
float c=0.12345678901234567890f; System.out.println(a);
System.out.println(b);
System.out.println(c); 打印结果
a = 1.2345679E7
b = 0.12345678901234568
c = 0.12345679
}

双精度浮点数(double)

双精度浮点数在机内占8个字节、有效数字16位、表示范围:-1.79E+308 ~ +1.79E+308

double的精度太低,不适合用于做财务软件,财务涉及到钱的问题,要求精度较高,所以在java中有一个基础的类库名为:java.math.BigDecimal,但这个BigDecimal类型是引用类型不是基础类型,切记!!!

在讲单精度浮点数(float)的时候,差不多顺道把double之间的区别讲了哈哈,所以最后给张很经典的图片“敷衍敷衍”下,哈哈哈 哎哎哎..别打...别打...别打脸QAQ



想深入了解浮点数在计算机中存储方式可以参考这篇文章

浮点数在计算机中存储方式

什么是浮点型?什么是单精度浮点数(float)以及双精度浮点数(double)?的更多相关文章

  1. Java浮点数float,bigdecimal和double精确计算的精度误差问题总结

    (转)Java浮点数float,bigdecimal和double精确计算的精度误差问题总结 1.float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结 ...

  2. float:浮点型double:双精度实型decimal:数字型单精度浮点数(Single)双精度浮点数(double)

        单精度浮点数(Single) 双精度浮点数(double)       Decimal为SQL Server.MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小 ...

  3. IEEE浮点数float、double的存储结构

    众所周知,C的float.VB的Single都是32位浮点数变量类型(也叫单精度浮点数),C的double和VB的Double则都是64位的浮点数变量类型(也叫双精度浮点数).有些编译器还支持更屌的l ...

  4. 小朋友学C语言(4):单精度浮点数与双精度浮点数

    上节课简单介绍了浮点数.计算机程序中的浮点数分为单精度浮点数和双精度浮点数. 单精度和双精度精确的范围不一样. 计算机里的最基本的存储单位用位(bit)来表示.bit只能用来存储0或1. 稍大一点的单 ...

  5. Relearning PHP (2) – php 的浮点数float

    Relearning PHP (2) – php 的浮点数float 暂无评论 php有很多坑,但是并不妨碍他是最好的语言.其他语言对于浮点数处理同样有问题,这应该是个“共有坑”.不信可以用googl ...

  6. 【转】单双精度浮点数的IEEE标准格式

    原文网址:http://blog.chinaunix.net/uid-24118190-id-75212.html 单双精度浮点数的IEEE标准格式 关键字:浮点数 IEEE标准 大多数高级语言按照I ...

  7. OpenMesh 将默认的 float 类型改为 double 类型

    OpenMesh 中默认的数据类型都是 float 类型的,如果要将其默认的 float 类型改为 double 类型,可以这么做: #include <OpenMesh/Core/Mesh/P ...

  8. C语言atof()函数:将字符串转换为double(双精度浮点数)

    头文件:#include <stdlib.h> 函数 atof() 用于将字符串转换为双精度浮点数(double),其原型为:double atof (const char* str); ...

  9. delphi 浮点数float转换成十六进制字符串的方法(FloatToHex)

    重新书写了float型转为十六进制的delphi程序 Function FloatToHex(Value: single): string; var l, i: integer; HexText,te ...

随机推荐

  1. Dart数据类型

    变量与常量: 变量: 使用var声明变量,可以赋予不同数据类型的值, 未初始化时默认值是null 使用final声明的变量只能被赋值一次 void main(){ var a; print(a); a ...

  2. netty源码解解析(4.0)-23 ByteBuf内存管理:分配和释放

    ByteBuf内存分配和释放由具体实现负责,抽象类型只定义的内存分配和释放的时机. 内存分配分两个阶段: 第一阶段,初始化时分配内存.第二阶段: 内存不够用时分配新的内存.ByteBuf抽象层没有定义 ...

  3. C语言I博客作业03

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8717 我在这个课程的目 ...

  4. MySQLdb操作数据库

    堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: + ...

  5. python编程基础之二十五

    匿名函数:不用def 定义的函数,没有函数名 lambda只是一个表达式,函数体比def简单的多 lambda的函数体不再是代码块 lambda只有一行,增加运行效率 lambda [参数1][参数2 ...

  6. .Net下MoongoDB的简单调用

    1.安装.Net 驱动:Install-Package MongoDB.Driver 2.数据插入 //新建Person测试类 public class Person { public long Id ...

  7. java集合类之LinkedList详解

    一.LinkedList简介 由于LinkedList是一个实现了Deque的双端队列,所以LinkedList既可以当做Queue,又可以当做Stack,在将LinkedList当做Stack时,使 ...

  8. 配置mysql可局域网内访问

    一 进入mysql输入密码 :mysql -u root -p二 执行可局域网访问命令:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ...

  9. Python玩转人工智能最火框架 TensorFlow应用实践 ☝☝☝

    Python玩转人工智能最火框架 TensorFlow应用实践 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 全民人工智能时代,不甘心只做一个旁观者,那就现在 ...

  10. windows上gedit 安装

    1. 用浏览器打开https://wiki.gnome.org/Apps/Gedit 下载并安装 gedit 文本编辑器.这个操作无需管理员权限. 2. 把 gedit 放到桌面或者快速启动栏,这样你 ...