zoukankan      html  css  js  c++  java
  • 浮点类型的精度问题

    代码:

     

    结果:

     

    那么为什么对double类型的数据进行计算得不到“精确”的结果呢?

    我们知道在计算机中浮点数的表示方法是由一个整数(即尾数)乘以一个基数(计算机中一般为2)的整次幂得到。(类似于科学计数法,科学记数法基数为10

    float的内存结构为:符号位表示正负,1位 指数位,8位 尾数位,32(符号位1表示负,0表示正

    指数是以2为底的,范围是 -128 到 127,如果超过了127,则从-128开始计。                                   即:127+1=-128

    尾数都省去了第1位的1,所以在还原时要先在第一位加上1。它可能包含整数和纯小数两部分,也可能只包含其中一部分,视数字大小而定。对于带有整数部分的浮点数,其整数的表示法有两种,当整数大于十进制的16777215时使用的是科学计数法,如果小于或等于则直接采用一般的二进制表示法。科学计数法和小数的表示法是一样的。

    小数部分则是直接使用科学计数法,形式是X * ( 2 ^ n 

    这样就导致浮点类型在计算机的存贮中无法精确表示。

  • 相关阅读:
    Python Semaphore
    Python 互斥锁
    Python 递归锁
    Python GIL锁
    Python 线程调用
    进程与线程
    Python paramiko模块
    Python SocketServer模块
    MonoDevelop with Visual Studio to Linux and Mac OSX maintaining a single code base for all platforms.
    mime大全收集
  • 原文地址:https://www.cnblogs.com/amiee/p/4852846.html
Copyright © 2011-2022 走看看