热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

是否有任何二进制值没有精确的十进制表示?

我们都知道,有些十进制值在二进制中没有精确的表示。例如十进制值0.1。在IEEE浮点格式中,它可以具

我们都知道,有些十进制值在二进制中没有精确的表示。

例如十进制值0.1

在 IEEE 浮点格式中,它可以具有不同的表示形式,具体取决于您要专用于表示浮点值的位数。

单精度(32 位)



  • 十六进制:0x3DCCCCCD


  • 二进制:1.10011001100110011001101×10 -4


  • 十进制:0.10000 00014 90116 11938 47656 25

双精度(64 位)



  • 十六进制:0x3FB999999999999A


  • 二进制:1.1001100110011001100110011001100110011001100110011010×10 -4


  • 十进制:0.10000 00000 00000 00555 11151 23125 78270 21181 58340 45410 15625

扩展精度(80 位)



  • 十六进制:0x3FFBCCCCCCCCCCCCCCCD


  • 二进制:1.100110011001100110011001100110011001100110011001100110011001101×10 -4


  • 十进制:0.10000 00000 00000 00000 13552 52715 60688 05425 09316 00108 74271 39282 22656 25

换句话说,十进制值0.1在二进制中没有精确的表示,它是无休止的重复值:

0.0 0011 0011 0011 0011 0011 0011 0011 0011 ...
0.0 ?0?0?1?1

以同样的方式 1?3 没有精确的十进制表示——它在“小数点”之后的数字永远重复:

0.33333 33333 33333 33333 33333 33333 33333 ...
0.?3

但它会走另一条路吗?

二进制中是否有任何值在十进制中没有精确表示?

我为什么要问?扩大理解的范围,增加人类知识的总和。

编辑:当链接的问题我的完全相反时,我不知道为什么有人投票关闭作为重复。

回答



不,每个二进制浮点数都有一个精确的十进制表示。

在二进制浮点的精确表示的数字正是那些可与分母是2的幂,即,被写入有理数X =一个/ 2 Ñ为整数一个Ñ

以十进制浮点数精确表示的数字正是那些可以用 10 的幂的分母书写的有理数,即y = b /10 n

但是第一类中的每个数字也属于第二类,因为a /2 n = a •5 n /10 n

更一般地,每个以u为底的精确表示的数字也将在以v为底的精确表示,当且仅当u 的每个素因数也是v的素因数。这将确保1 / ù Ñ可以写成一个/ v的一段一个

这解释了不对称性:2 是质数,10 的质因数是 2 和 5。所以 2 的每个质因数都是 10 的质因数,反之则不然。






推荐阅读
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • Java设计模式详解:解释器模式的应用与实现
    本文详细介绍了Java设计模式中的解释器模式,包括其定义、应用场景、优缺点以及具体的实现示例。通过音乐解释器的例子,帮助读者更好地理解和应用这一模式。 ... [详细]
  • 华为捐赠欧拉操作系统,承诺不推商用版
    华为近日宣布将欧拉开源操作系统捐赠给开放原子开源基金会,并承诺不会推出欧拉的商用发行版。此举旨在推动欧拉和鸿蒙操作系统的全场景融合与生态发展。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • 本文介绍了如何通过安装 rpm 包来使用 resize2fs 和 ext2online 工具进行系统文件的扩容。提供了详细的步骤和注意事项。 ... [详细]
  • 【妙】bug称它为数组越界的妙用
    1、聊一聊首先跟大家推荐一首非常温柔的歌曲,跑步的常听。本文主要把自己对C语言中柔性数组、零数组等等的理解分享给大家,并聊聊如何构建一种统一化的学习思想 ... [详细]
  • PHP 使用 Cookie 进行访问授权的方法
    本文介绍了如何使用 PHP 和 Cookie 实现访问授权,包括表单验证、数据库查询和会话管理等关键步骤。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 敏捷开发:大型项目团队的高效持续交付策略
    在大型软件项目中,团队的有效协作变得愈发重要。近期举办的“敏捷之旅广州站——精进之旅”活动中,多位业内敏捷项目管理专家进行了公益讲座,分享了敏捷开发的应用方法和互联网项目管理的实用技巧。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
author-avatar
雄鹰访谈录
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有