码迷,mamicode.com
首页 > 其他好文 > 详细

程序员必知之浮点数运算原理详解

时间:2015-12-20 07:05:12      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

程序员必知之浮点数运算原理详解

  导读:浮点数运算是一个非常有技术含量的话题,不太容易掌握。许多程序员都不清楚使用==操作符比较float/double类型的话到底出现什么问题。 许多人使用float/double进行货币计算时经常会犯错。这篇文章是这一系列中的精华,所有的软件开发人员都应该读一下。

  随着你经验的增长,你肯定 想去深入了解一些常见的东西的细节,浮点数运算就是其中之一。

1. 什么是浮点数?

  在计算机系统的发展过程中,曾经提出过多种方法表达实数。

  【1】典型的比如相对于浮点数的定点数(Fixed Point Number)。在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置。货币的表达就可以使用这种方式,比如 99.00 或者 00.99 可以用于表达具有四位精度(Precision),小数点后有两位的货币值。由于小数点位置固定,所以可以直接用四位数值来表达相应的数值。SQL 中的 NUMBER 数据类型就是利用定点数来定义的。

  【2】还有一种提议的表达方式为有理数表达方式,即用两个整数的比值来表达实数。

  定点数表达法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数。最终,绝大多数现代的计算机系统采纳了所谓的浮点数表达方式

  【3】浮点数表达方式, 这种表达方式利用科学计数法来表达实数,即用一个尾数(Mantissa ),一个基数(Base),一个指数(Exponent)以及一个表示正负的符号来表达实数。比如 123.45 用十进制科学计数法可以表达为 1.2345 × 102 ,其中 1.2345 为尾数,10 为基数,2 为指数。浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。

  提示: 尾数有时也称为有效数字(Significand)。尾数实际上是有效数字的非正式说法。

  同样的数值可以有多种浮点数表达方式,比如上面例子中的 123.45 可以表达为 12.345 × 101,0.12345 × 103 或者 1.2345 × 102。因为这种多样性,有必要对其加以规范化以达到统一表达的目标。规范的(Normalized)浮点数表达方式具有如下形式:

d.dd...d × β e , (0 ≤ d i < β)

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

程序员必知之浮点数运算原理详解

标签:

原文地址:http://www.cnblogs.com/icmzn/p/5060195.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!