zoukankan      html  css  js  c++  java
  • c++中float精度问题

    float存储格式为:
    S              E          M
    1位符号位 8位指数  23位尾数

    转成数值即为:V=(-1)^S * 1.M * 2^(E-127)

    对于16.5转成二进制为00010000.1==>1.00001*2^4,
    那么在内存的表示为:
    符号位    指数4+127 = 131      尾数
    0          10000011               00001 000000000000000000

    在转换过程中由于需要往右移位, 可见对于float数整数部分越大,小数部分的精度就越低
    对float数来说有效数字约为7位(2^23约等于10^7),所以整数部分占的位数越多,小数部分
    的精度就越低,当整数部分超过9999999后小数部分已经完全无精度了

  • 相关阅读:
    Hibernate Validation注解列表
    Java_Shell多线程
    Lua读写文件
    shell导出和导入redis
    大文件读写
    Java_Hbase优化
    控制语句if
    字典(DICT)
    元组Tuple
    Session 会话
  • 原文地址:https://www.cnblogs.com/corefans/p/1354902.html
Copyright © 2011-2022 走看看