float a;a=123456.789e5;- s* ~' V9 N; u! H0 x# RSystem.out.printf("%f\n",a);* s- l4 t. Q2 [" E" x" @8 `* i4 a* S& F4 T! r' p结果是:' I7 B$ d* a8 r/ _' a  m# L12345678848.000000' u. Z/ l; Z% }& ]* j# }5 q3 V1 R! M6 T, @' |5 C' e+ b6 o& g而不是:   12345678900.000000. k. B7 g3 y% t# ~1 o7 }9 ]1 A( l( E8 m" W* P: P9 x) [' u; l% o' @2 V分析:由于float在内存中占4个字节(32 bit),对于这个数来说会有数据丢失。实型数据是按照指数形式存储的。系统把一个实型数据分成小数部分和整数部分分别存放。在4个字节中,究竟用多少位来表示小数部分,多少位来表示指数部分,对于不同编译器可能会有不同。多数是以3 byte (24 bit) 表示小数部分(包括符号),以1 byte (8 bit) 表示指数部分(包括指数的符号)。看看浮点数是怎样炼成的,呵呵:4 \, s& c* X* L8 L; Q( `7 M  B12345678900(十进制)=>+ c: S1 v- B! w. [3 h$ d! l# u1011011111110111000001110000110100(34位精确值)========>6 Q# p7 w. V, }2 i! z+ x符号位:0+1279 A4 w- x9 k$ O指数:33(100001=>00100001 =====> 10100000# g4 V1 ^" l! l3 G" `原码          阶码(移码)尾数:1.01101111111011100000111(取24位)=>(注意:前面的1在实际存放时为了多存放一位而隐含,即浮点数的尾数的最高位永远隐含为1)- W1 |  V+ Z" M3 L& |+ k0 10100000 01101111111011100000111(实际放了尾数后面的23位); E! {7 q# L  m( S6 l2 C1 a2 m指数           尾数最后结果就是01010000001101111111011100000111现在再把它还原成整数:9 ?4 S& Q; D0 b1 e, B1 j(1)取尾数23位:01101111111011100000111(2)在前面加上隐含的1,变成:101101111111011100000111' Y, h/ A! h* B. I- q0 v  B9 P3 _(3)取指数8位:10100000(4)指数减127得:100001(33)6 L  H% k; {0 L9 u- m(5)尾数向左移动10位(尾数本身23位,33-23=10):10110111111101110000011100000000004 u" _! [: e" s6 b5 {+ z: \此即123456788485 _, Y4 U& B& Z. ?! o# a4 U- I5 @8 c! T6 `9 U% q. k$ @, ?' n' L+ e, l1 d启示:在需要精确答案的地方,要避免使用float和double;对于货币计算,要使用int、long(把零钱换成分来表示,这时就没有小数位,然后结果再除以相应的权值.)或BigDecimal。

float 最小误差_关于float与double结果的误差相关推荐

  1. float php 运算_系统的讲解 - PHP 浮点数高精度运算

    概述 记录下,工作中遇到的坑 ... 关于 PHP 浮点数运算,特别是金融行业.电子商务订单管理.数据报表等相关业务,利用浮点数进行加减乘除时,稍不留神运算结果就会出现偏差,轻则损失几十万,重则会有信 ...

  2. c语言中对float保留固定3位,float保留三位小数 float,double 除法 保留 指定位

    java里怎样让float保留3位小数 数据库里保存的float值是0.0346562 保留小数位3位 如0.035后面的四舍五有一个方法很简单,保留三个小数,就是乘以1000(10的3次方),取整, ...

  3. 浮点数(float的有效位数,有效范围理解),使用double不使用float

    浮点数 float.double精度范围 在使用浮点数时,不要使用float,直接使用double. 使用BigDecimal而不用double或long(浮点数运算不安全) 相关精度文章: floa ...

  4. mysql数据设置浮动_浮动float

    clear:both; 用法 什么时候用 clear:both; CSS手册上这样解释的:该属性的值指出了不允许有浮动对象的边. 这个属性是用来控制float属性在文档流的物理位置的. 当属性设置fl ...

  5. python中float函数作用_解析要在Python中浮动的字符串(float()函数)

    给定一个字符串值(包含浮点值),我们必须在Python中将其转换为浮点值. 要将字符串值转换为float,我们使用float()功能. Python float() 功能 float()functio ...

  6. python float精度问题_Python之☞float浮点数精度问题

    (下面是精度漏洞的问题-转自其它) 从下面这段脚本体现出来: >>> x = 0.0 >>> for i in range(10): x += 0.1 print( ...

  7. c语言int转换成float,int怎么转化为float 将 int型变量n转换成float型变量的方法是...

    请问C语言中如何将int转换为float 将 int型变量n转换成float型变量的方法是 A float n B (float )n C float( n) D( float) ( n)不懂小编的人 ...

  8. 【Java面试题】用float型定义变量:float = 3.14;,是否正确?

    题目: 用float型定义变量:float = 3.14:,是否正确? 解析:不正确,赋值运算符(=)左右两边的精度类型不匹配.在默认情况下,包括小数点的实数,如本题中的3.14,被存储为double ...

  9. 时间序列预测最大预测误差_预测误差的措施可以通过实验了解它们

    时间序列预测最大预测误差 入门(Getting Started) Measurement is the first step that leads to control and eventually ...

最新文章

  1. jquery之hide()用法详解
  2. 私人仓库免费后本地git和远程github首次连接
  3. 基于SpringJDBC 实现关键功能-EntityOperation
  4. XCTF-高手进阶区:web2
  5. 【操作系统】I/O子系统的层次结构和核心I/O子系统
  6. java设置框架位置_怎样设置label的位置啊?求指导
  7. 机器学习Scikit-Learn相关文档汇总(ApacheCN)
  8. ue4 unreal 使用 Download Image 下载图片 下载多张图片 批量下载 类似untiy协程
  9. RTI DDS. c++11例子 -1
  10. python读取gif图片并显示_Python爬虫实现获取动态gif格式搞笑图片的方法示例
  11. 美团CAT客户端接入方式
  12. PMP-商业论证中的财务测量指标-动态投资回收期、净现值、内部收益率、效益成本率计算
  13. 细讲如何判断文法是否是LL(1)文法
  14. python 过滤相似图片_Python过滤纯色图片,挑选视频封面
  15. FPGA 使用PCIE高速接口
  16. java程序员烂大街了吗?java入坑之前先来看看行情
  17. wrong ELF class: ELFCLASS32
  18. java毕业设计二手交易网站Mybatis+系统+数据库+调试部署
  19. CentOS7两种方法安装 JDK
  20. 瓷都景德镇牵手蚂蚁区块链,重塑非遗陶瓷产业

热门文章

  1. 山师计算机二级考试科目,山师计算机应用技术考试试题与答案.doc
  2. 织梦php版本图片不能上传,织梦Dedecms会员中心无法上传图片的解决方法
  3. unity 导入gltf_Unity3D使用glTF格式三维文件,glTF在unity中如何呈现,glTF导入unity
  4. python导入图片语法_MarkDown添加图片的三种方式
  5. python绘制正方形、利用turlr_《像计算机科学家一样思考Python》学习笔记(四)...
  6. arp协议的主要功能是_计算机网络之ARP协议
  7. HWPFDocument读取doc,wps文档(含图片读取)
  8. c#里面的combobox在代码中怎么根据它的text获取它的index?
  9. spring aop获取目标对象的方法对象(包括方法上的注解)(转)
  10. Spark机器学习(7):KMenas算法