当前位置: 首页 > 知识库问答 >
问题:

binary32和binary64的有效十进制数字

公孙宇
2023-03-14

根据维基百科,二进制32格式具有6到9个有效十进制数字精度,64格式具有15到17个有效十进制数字精度。

我发现这些有效的十进制数字是用尾数计算出来的,但是我没有得到它,怎么计算呢?知道吗?

32位格式的曼蒂萨=24位,64位格式的曼蒂萨=53位

共有1个答案

璩华辉
2023-03-14

首先,对于这个问题,最好使用总有效数大小 24 和 53。前导位未表示的事实只是编码的一个方面。

如果你只对一个模糊的解释感兴趣,每个十进制数字正好包含log2(10)(大约3.32)比特的信息。当你必须对一个数字进行编码时,你需要4位,但这里我们讨论的是对几个连续的十进制数字进行高效编码,所以3.32这个数字就可以了。

53位/日志2(10)-

24 位 / log2(10) -

如果你想正确地做到这一点,你需要考虑的事实是,不一样的数字可以用二进制和十进制表示。询问二进制浮点小数精度的人通常被认为是指可以在二进制格式中往返并返回相同值的十进制精度,或者是指将二进制浮点数通过十进制往返到相同值所需的十进制精确度,因为这些是最有意义的解释。因此范围为“6…9”和“15…17”。6是保证往返二进制32的十进制位数,9是往返二进制32所需保留的十进制数,以此类推。

博客探索二进制的作者目前正在写一个关于往返的系列,这个系列是你接下来如果对log2(10)=3.32的解释不满意应该读的。

 类似资料:
  • 我正在使用DecimalFormats将双打格式化为字符串。然后这个字符串被集成到我的表示层中。 问题:我想保留所有的小数。示例:“12345678.123456789” 格式:#.#- 我可以用##########对于大小数点,但是如果小数点更长呢? 我发现我的小测试程序很有用,想和大家分享。 你能帮我显示所有小数吗? 这导致: 编辑:一位用户提到了一个相关的问题:如何很好地将浮点数格式化为字符

  • 主要内容:二进制数、八进制数和十六进制数的表示,二进制数、八进制数和十六进制数的输出C语言中的整数除了可以使用十进制,还可以使用二进制、八进制和十六进制。 二进制数、八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。 1) 二进制 二进制由 0 和 1 两个数字组成,使用时必须以

  • 问题内容: 我试图找出to_char()的格式规范,这将给我以下结果。 给出0.1并: 给出1。 我尝试了以下解决方案: 给出“ .1”。 给出0.1,这是可以的,但是: 给出1.0,这不行。 你有什么建议吗? 问题答案: 返回的精度需要保持一致,因此唯一的选择是使用DECODE或CASE语句有条件地返回您需要的内容: 该示例不是很好-尚不清楚您的数据是否将具有或大于1 / etc的值。 编辑Mi

  • 问题内容: 我在java(JDK 1.4)中对小数的管理有问题。 我的 第一个* 和 第二个 有两个 双 精度数字(作为格式化 String的 输出)。我在拳头和秒针之间求和,并且我得到一个带有更多十进制数字的数字! *** __ 我宁愿不增加阈值( 0.5d ),因为在类似情况下我也不安全(当我开始编码时,规范将 0.1d 作为比较值)。如果这是唯一的解决方案,那么 0.9d 的值是解决此问题的

  • 一个显而易见的解决方案是: 这需要线性时间。我们能再快点吗? 这比线性时间快吗 还有哪些方法(效率是首要考虑的)<我见过这个,只是我只需要找到第一个数字。(还有,我不明白答案)。

  • 问题内容: 我已经找到了很多关于如何在Objective-C中执行此操作的指南,但是我希望看到一种更加面向Swift的方法。 我有一个UITextField,用户可以在其中输入货币价格。文本字段将调用小数键盘。但是,在iPad上,出现的键盘具有整个范围的非十进制符号。 基本上,对于每一次按键,我都希望不可能在该字段中键入非数字或超出单个小数的任何内容。如果键入了一个十进制,我想使其不可能输入第二个