[CPP]cpp小笔记2 --- float 的值的精度最大为Decimal point 往左6-7位

原创 2013年12月04日 10:44:03

2. float 的值的运算

c++ primier plus中有一段关于float运算的代码:

float a = 2.34E+22f;
float b = a + 1.0f;
cout << "a =" << a <<endl;
cout << "b -a =" << b - a<< endl;

结果是:

a =2.34e+22
b - a =0

这是为什么呢?

The single precision floating point type float is like this(assuming IEEE-754)

single precision floating point

cpp在保存float type时,使用单精度#single precision#来保存float.格式是

m*2^e
where m is a number between 223 and 224,and e is an integer. 从上图来看,m的最大值是  223#最大16777215# and e的最大值是 28


float在保存是会被rounded到最接近这个float的数值。 So the value 2.34e+22 is actually rounded to 

10391687*251, which is 23399998850475413733376. This is the value of a.


再有,float的运算结果也会被rounded到最接近的float数值。 if you add 1 to a, the result is 

23399998850475413733377, which is again rounded to the nearest floating-point number, which is still, of course, 

23399998850475413733376. So b gets the same value as a. Since both numbers are equal, a - b == 0.



Boost里面终于有了multiple precision的工具了

http://www.boost.org/doc/libs/1_54_0/ http://www.boost.org/doc/libs/1_54_0/libs/multiprecision/do...

Cpp Concurrency In Action(读书笔记6)——无锁并发数据结构设计

定义和意义   使用互斥量、条件变量,以及“期望”来同步“阻塞”(blocking)数据的算法和数据结构。使用原子操作的“内存序”特性,并使用这个特性来构建无锁数据结构。   不使用阻塞库的数据结构和...
  • BestZem
  • BestZem
  • 2016年11月16日 23:22
  • 507

Leetcode 166. Fraction to Recurring Decimal (Medium) (cpp)

Leetcode 166. Fraction to Recurring Decimal (Medium) (cpp)
  • Niko_Ke
  • Niko_Ke
  • 2016年08月12日 21:26
  • 314

OpenCV3.0 Examples学习笔记(6)-edge.cpp

这个系列的目的是通过对OpenCV示例,进一步了解OpenCV函数的使用,不涉及具体原理。 目录 简介 Example运行截图 Example分析 Example代码 简介 本文记...

【HDU5900 2016 ACM ICPC Asia Regional Shenyang Online I】【区间DP】QSC and Master 相邻互质取数最大取值.cpp

Eighty seven Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others) ...

剑指OFFER || 打印从1到最大的N位数 12_Print1ToMaxOfNDigits.cpp

剑指offer上面看到的题目,来练习一下~~~mark~~~~ 这道题说的是打印1到最大的N位数,如N=3,则输出1到999之间的所有数字。 so, 需要特别注意:大数。 直观算法: (1)需要建...
  • xsloop
  • xsloop
  • 2015年07月24日 16:36
  • 337

OpenCV3.0 Examples学习笔记(1)-contours2.cpp-通过findContours 函数实现轮廓提取

简介 这个系列的目的是通过对OpenCV示例,进一步了解OpenCV函数的使用,不涉及具体原理。 示例代码地址:http://docs.opencv.org/3.0.0/examples.html(安...

Cpp Concurrency In Action(读书笔记2)——线程间共享数据

前言 上一篇:线程入门及管理(点击打开链接)。 避免恶性条件竞争
  • BestZem
  • BestZem
  • 2016年10月24日 21:42
  • 460

OpenCV3.0 Examples学习笔记(2)-convexhull.cpp

这个系列的目的是通过对OpenCV示例,进一步了解OpenCV函数的使用,不涉及具体原理。 本文记录了对OpenCV示例convexhull.cpp的分析。 资料地址:http://docs.o...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[CPP]cpp小笔记2 --- float 的值的精度最大为Decimal point 往左6-7位
举报原因:
原因补充:

(最多只允许输入30个字)