Java_语法基础_浮点数 近似存储
来源:互联网 发布:医院网站源码 编辑:程序博客网 时间:2024/05/08 16:17
我们知道,十进制的小数部分转换成计算机的二进制存储时,采用的是乘2取整法。直到积为1为止。例如,0.8125的转换过程如下。
0.8125*2=1.625 1
0.625*2=1.25 1
0.25*2=0.5 0
0.5*2=1 1
于是,二进制的结果为0.1101,也就是1.101*2^(-1),如果以float类型变量存储该值,只需占用23位有效位数中的3位就够了,其余位为0,结果为:
0 01111110 10100000000000000000000
我们来计算下小数值0.3,过程如下。
0.3*2=0.6 0
0.6*2=1.2 1
0.2*2=0.4 0
0.4*2=0.8 0
0.8*2=1.6 1
……
乘积的结果永远不为1,这也就意味着,该小数值不能准确地用二进制来表示,就算double类型有52位有效位数,依然不能准确存储,只能在精度上比23位有效位数的float类型更接近实际值而已。这也就是浮点类型数据不能够准确存储的原因。
0 0
- Java_语法基础_浮点数 近似存储
- Java_语法基础_浮点数 最近舍入模式
- Java_语法基础_浮点数据的存储
- Java_语法基础_移位运算符
- Java_语法基础_标识符定义规则
- Java_语法基础_“$”惹的祸
- Java_语法基础_字符串与数字之间的转换
- Java_语法基础_十进制转换为其它进制
- Java_语法基础_保留指定位数小数
- Java_语法基础_将字符串转换为Boolean对象
- Java_语法基础_获取指定年份二月的天数
- Java_语法基础_内存空间及String详解
- Java_语法基础_整型之间的转换
- Java_语法基础_+0与-0的差异
- Java_语法基础_移位运算的真实剖析
- Java_语法基础_运算顺序的详细挖掘
- Java_语法基础_不要让类型默默转换
- Java_语法基础_边界,边界,还是边界
- 阿里内推实习面试体会(客户端开发)
- Axis2: 使用services.xml文件发布WebService(2)
- Java设计模式——代理模式(Proxy)
- JSP简单的MVC案例
- js Image()对象onload和预加载
- Java_语法基础_浮点数 近似存储
- ANT安装与测试和简明教程
- Axis2.xml配置说明
- instanceof用法
- 删除 Asterisk on CentOS
- Axis2: services.xml的MEP(信息交换模式)配置
- 线程间操作无效: 从不是创建控件“progressBar1”的线程访问它
- LeetCode(190) Reverse Bits
- Swing多线程