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 

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

  • 相关阅读:
    Loadrunner系列学习--Loadrunner架构(1)
    Loadrunner学习---脚本编写(1)
    loadrunner学习系列---脚本编写(2)
    LoadRunner学习---脚本编写(4)(比较重要)
    LoadRunner内部结构(1)
    pat 1142
    pat 1025
    pat 1140
    c/c++ 常用函数/方法
    pat 1136
  • 原文地址:https://www.cnblogs.com/amiee/p/4852846.html
Copyright © 2011-2022 走看看