当前位置: 首页 > article >正文

javaSE.浮点类型

  1. float 单精度浮点型(32bit,4字节)
  2. double 双精度浮点型(64bit,8字节)

小数在计算机如何存储呢?

float 单精度实数的存储结构:

S(31)   E(阶码,30~23,共8位)  M(尾数,22~0,共23位)

double 双精度的存储结构:

S(63)   E(阶码,52~62,共11位) M(尾数,51~0,共52位)

根据国际标准IEE 754,任意一个二进制浮点数V可以表示成下面的形式:

 V = (-1)^S  * M *  2^E

①(-1)^S表示符号位,当S = 0,V为整数,当S = 1,V为负数;

②M表示有效数字,大于等于1,小于2,但整数部分的1不变,因此可以省略。(例如尾数为1111010,那么实际上就是1.111010,尾数的首位必须是1,1后面紧跟小数点,如果出现0,001111这样的情况,去掉前面的0,移动1到首位,随着时间的发展,IEEE754标准默认第一位为1,故为了能够存放更多数据,就舍去了第一位,比如保存1.0101的时候,只保存0101,这样能够多存储一位数据)

③2^E表示指数位。(用于移动小数点,所以说才称为浮点型)

比如,对于十进制的5.25对应的二进制为:101.01,相当于:1.0101*2^2。

所以S为0,M为1.0101,E为2.

因此,对于浮点类型,最大值和最小值,不仅取决于符号和尾数,还有它的阶码,

大致范围:

  • 单精度:+or- 3.40282347*10^38
  • 双精度:+or- 1.79769313486231570*10^308

精度缺失 

public class Main {
    public static void main(String[] args) {
          float f = 9.9F;
          double a = f; // 隐式类型转换,float转double
          System.out.println(f); //9.9
          //精度缺失
          System.out.println(a); //9.899999618530273
    }
}

精确计算会用到:BigDecimal和BigInteger,其中BigDecimal更适合需要精确计算的场景。

long 竟然可以丢给float 进行隐式类型转换

float 只有32bit,long有64bit。由于浮点类型,指数可以变化,最大数值范围是大于long的,虽然精度会缺失,但可以表示这么大的数。

public class Main {
    public static void main(String[] args) {
        long l = 5234523454235432534L;
        float f = l;
        System.out.println(f); //5.2345236E18
    }
}

隐式类型转换规则:

byte->short(char)->int->long->float->double


http://www.kler.cn/a/515079.html

相关文章:

  • 从对等通信到万维网:通信模型变迁与拥塞求解
  • 75,【7】BUUCTF WEB [Weblogic]SSRF(未作出)
  • 寒假刷题记录
  • 纯前端实现表格中的数据导出功能-使用xlsx和file-saver
  • 【2024 博客之星评选】请继续保持Passion
  • 在Ubuntu上安装RabbitMQ教程
  • 生成对抗网络(GAN)入门与编程实现
  • LeetCode:53. 最大子序和
  • 初始Transformer
  • C++ STL(8)map
  • 正则表达式的艺术:轻松驾驭 Python 的 re 库
  • 智能鞋利用机器学习和深度学习技术进行患者监测和步态分析的演变与挑战
  • Roland 键盘合成器接声卡(福克斯特/雅马哈)声音小/音质异常的问题
  • insight在线需求分析系统概要介绍
  • redis离线安装部署详解(包括一键启动)
  • 为什么要申请专利
  • LiveBench:AI 模型基准测试与评估工具解析与实战指南
  • 复位信号的同步与释放(同步复位、异步复位、异步复位同步释放)
  • 【网络协议】【http】【https】TLS解决了HTTP存在的问题-加密通信+摘要,数字签名+CA证书
  • HTTP post请求工具类
  • 博客之星2024年度总评选——我的年度创作回顾与总结
  • Django项目的创建及运行——Django学习日志(一)
  • Ubuntu环境 nginx 源码 编译安装
  • 吴恩达深度学习——神经网络介绍
  • 最新版pycharm如何配置conda环境
  • 考研408笔记之数据结构(七)——排序