C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算

无论是float还是double,在内存中的存储主要分成三部分,分别是:

(1)符号位(Sign): 0代表正数,1代表负数

(2)指数位(Exponent): 用于存储科学计数法中的指数部分,并且采用移位存储方式

(3)尾数位(Mantissa): 用于存储尾数部分

由图可知:

float 是 32位, 其中有23位用于存放尾数, 带有一个固定隐含位… 所以float的有24个二进制有效位位数.

2^24共有8个十进制位. 所以有些编译器 float的有效数字位是 8位 , 有些有效数字位是 7位.(注意不是小数的位数, 是有效数字位)

double也一样,是64位, 其中有52位用于存放尾数, 一个固定隐含位. 共有 53个二进制有效位位数.

2^53次方有15个十进制位, 所以有些编译器double的有效数字位是15位, 有些是16位

接着, 我们应该明确一点:C语言中,%f表示保留7位有效数字7位有效数字: 是指 整数部分 和小数部分一共7位

单精度数的尾数用23位存储,加上默认的小数点前的1位1,2^(23+1) = 16777216。

因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。

双精度的尾数用52位存储,2^(52+1) = 9007199254740992,

因为10^16 < 9007199254740992 < 10^17,所以双精度的有效位数是16位。

从运行结果上可以看出输出的结果中前七位是和原数据保持一致,从第八位开始就乱码了,有些人就会问了,这只是整数部分,那小数部分呢?不要着急,看下面。

结果中48965.94是和原数据的前七位是保持一致的,这样就可以证明上面所说的:C语言中,%f表示保留7位有效数字7位有效数字: 是指 整数部分 和小数部分一共7位,有些初学者还会把小数点也算进去,其实这是不对的。

2.在默认情况下以%f格式输出的情况下会输出6位小数,但并不能保证这6位小数有效,即:是否有效还要看整数位和小数位加在一起是否超过7位。

3.另外我们要知道:有效数字的位数与指定输出的小数位数(%.7f)是两码事。%.mf 格式是自己设置需要输出几位小数。

如:

and

java float超过7位_为何float有效位数为7位?相关推荐

  1. 骁龙660是32位还是64位_微信有32位与64位,很多人不知道~

    我们都知道电脑有32位系统与64位操作系统,当然手机同样如此: 如今,不管是电脑还是手机,处理器都更新到了64位处理器,这就保证了运算能力,以至于手机.电脑不管装什么软件都不会感觉卡顿. 就如我看了下 ...

  2. mysql+字符串后8位_字符的一字节8位问题

    #include int main() { char a[1000]; int i; for(i=0;i<1000;i++) { a[i]=-1-i; } printf("%d\n&q ...

  3. 怎么看python是64位还是32位_怎样查看python是64位还是32位

    怎样查看python是64位还是32位?下面给大家介绍三种方法: 方法一: 打开IDLE,看第一行提示,例如: 32位系统是这样的 Python 3.5.1 (v3.5.1:37a07cee5969, ...

  4. 如何卸载office201032位_如何卸载并清除32位office软件

    删除以下注册表信息在弹出的确认项删除对话框中选择"是"按钮. HKEY_CURRENT_USER\Software\Microsoft\Office\15.0 HKEY_LOCAL ...

  5. python整数表示精确到什么位_保留整数表示精确到什么位?

    展开全部 保留整数表示精确到个位. 整数(integer)就是像-3,-2,-1,0,1,2,3,10等这样的数.如果不加特殊说明,e69da5e887aa62616964757a686964616f ...

  6. 骁龙660是32位还是64位_骁龙660是32位还是64位_都是搭载骁龙660处理器 这三款国产手机如何选...

    在国产中端手机市场中,我们可以选择的余地越来越多了,魅族15.OPPO R15和vivo X21都是搭载高通骁龙660处理器,基本的硬件性能配置也相仿,但价格上魅族15比OV便宜上500-700元,众 ...

  7. c语言double型小数点后几位_c语言float类型小数点后有几位有效数字?_后端开发...

    #define和printf是不是c语句?_后端开发 #define和printf都不是c语句,因为C语言的语句用来向计算机系统发出操作指令,一个语句经编译后产生若干条机器指令,C语句都是用来完成一定 ...

  8. java long to float_为什么Java中long可以自动转换成float

    Java中,long型是64位的,float型是32位的.为什么long型可以自动转float型呢? 这里就涉及到浮点数在内存中的存储问题了.对于byte,short,int,long四个整数类型而言 ...

  9. java将数字转化为指定类型[float保留小数点确定、数字前加0]

    有时候需要在数字前加0,比如说日期月份1月写成01月. 如下类便可以实现. package util;import java.math.BigDecimal; import java.text.Dec ...

最新文章

  1. 24 个你应该了解的 PHP 库
  2. Ajax[Mount]
  3. 本地安全沙箱最快解决办法
  4. 阿里技术专家:数据一致性检测的应用场景与最佳实践
  5. oracle监听服务无法启动不了,关于ORACLE监听服务无法启动的问题
  6. mysql自动提交的概念_MySQL入门之事务概念
  7. 【转】R语言处理大规模数据集的编程要点
  8. 快速排序算法实现:单向扫描法双向扫描法三分法(有相同元素)
  9. ensprip引入静态路由_IP路由基础理论知识详解(三)
  10. linux ntfs 转换 无损,无损数据下NTFS转换FAT32分区
  11. 家庭组网 登录光猫超级账户(吉比特GM228-S)改桥接并使用路由器拨号上网 关闭QoS
  12. Android移动应用开发入门
  13. html中版权怎么写,HTML版权符号是怎么输入的、代表什么-京标知识产权
  14. Revel后台管理框架
  15. alt+w热键组合无法使用
  16. 《大型网站技术架构-核心原理与案例分析》(李智慧 著)第3章-大型网站核心架构要素
  17. 面试的时候,如何做自我介绍?
  18. win10 更新计算机时间,win10更新时间太长怎么回事_windows10更新时间太久解决教程...
  19. 云服务器存储文件,云服务器存储文件
  20. 1.5极限存在准则和重要极限

热门文章

  1. 解决Java中JWT的token认证接口测试时:认证失败,无法访问系统资
  2. 英诺特生物递交注册:年营收降68% 因新冠检测产品收入下滑
  3. 八、Python3自动化运维——质量报表模块
  4. 从 Vue Router 0.7.x 迁移
  5. NR PDSCH(一)时域资源
  6. ios和android组件对比,iOS 和 Android 设计规范对比
  7. 牛客网vivo2020届春季校园招聘在线编程考试
  8. vivo2020届春季校园招聘在线编程考试(1)
  9. OpenCV使用findContours查找轮廓和相关函数——C++
  10. js实现modbus_Modbus通讯协议