浮点数大于精度时称为什么?
在单点精度中,有23位的有效位给出一个整数范围(如果我们只存储离散的整数值)高达2 ^ 24。 指数为8位,范围可达2 ^ 127。 在大数量级有一个点,他们开始失去有效位数/尾数的有效数字。
这意味着像(2 ^ 32 + 2 ^ 8)这样的数字:
4294967552
0x100000100
0b100000000000000000000000100000000
将被简单地存储为:
指数0b00100000
有效位数/尾数0b00000000000000000000000(1位实施位)
并从精度上失去256。
这似乎与所谓的“低于正常”的数字相反。 基本上,在有效数中作为整数存储的数字范围远小于考虑指数时能够存储的数字的范围。 所以一旦你达到2 ^ 24你开始失去信息(可能我误解了标准)! 这似乎与在低于正常范围时发生的情况相反,当信息丢失时有一个有效数字,但指数小于2 ^ -127
我在理解IEEE754标准时错过了些什么?
如果不是这种情况,当大数量的数字失去精度时(这似乎与次正常相反,也许是'超常规')?
为了保持精度,我应该将所有浮点数限制为 - (10 ^ 7)<x <10 ^ 7?
编辑更新了100,000,010的数字,我还添加了更多的语言来解释我的理解。
编辑2 @天气风向标是正确的。 浮点精度的要点是,一旦我们开始增加幅度,就会失去小数精度,当幅度增加小数点超过有效数的末尾时,这会开始影响整数比例
0.0000000000000000000001 - > - > 10000000000000000000000.0我可以看到为什么指数比用于表示超小数字以达到最大精度的有效数值要大得多,但对于大数量的数字,似乎有一整类数字在更大范围内丢失信息一旦我们超越了二十一世纪的23 sig无花果,我们就不会超过分数。 我想知道这些被称为什么,如果他们甚至有一个名字,例如“超级正常”?
当一个实数的所有数字都不能用浮点格式表示时,会发生什么的名字就是“四舍五入”。
表示整数的情况有些特殊,因为在典型的浮点格式中,所有小整数都可以精确地表示,特别是没有整数非常接近于0,无法精确表示。
然而,由于这个问题暗示了低于正常的数字,因此认为达到低于正常范围的溢出的双重性更为正确。 一种看待这种情况的方法是在单精度IEEE 754数字的整个正常范围内的有效精度是24位,并且当数字太接近零(低于正常范围)并且精度降低到0时精度逐渐减小当溢出时(+ inf和-inf)一次全部位。
由于该问题是关于表示整数的(参见注释),因此在单精度IEEE 754中,可以使用-224 <= x <= 224来表示(即[-16777216 ... 16777216])的任何整数x。 16777217是不能完全以单精度表示的最小正整数(最接近 - 偶数规则意味着它被舍入到16777216.0)。
浮点解决了表示一些不是整数的实数的更一般的问题,以及一些大于所有整数可表示的最大整数的实数(这里是16777216),所有整数都具有几乎相同的相对精度(至少1/2精度)。
链接地址: http://www.djcxy.com/p/85585.html上一篇: what is it called when a floating point number is larger than its precision?
下一篇: Lua get number type