Nie*_*sol 21 language-agnostic math floating-point
我已经阅读了很多关于花车的内容,但这些都是不必要的.我想我已经理解了它,但我只想知道一件事:
我知道1/pow(2,n),带有n整数的形式的分数可以用浮点数精确表示.这意味着,如果我自己增加1/32了3200万次,我会得到确切的结果1,000,000.
什么样的1/(32+16)?它是两个两个幂之和的一个,这有用吗?或者它1/32+1/16有效吗?这是我很困惑的地方,所以如果有人能为我澄清这一点我会很感激.
Mys*_*ial 29
规则可以概括为:
所以1/(32 + 16)在二进制中是不可表示的,因为它在分母中的因子为3.但是1/32 + 1/16 = 3/32.
也就是说,在浮点类型中可以表示更多限制.例如,IEEE中只有53位尾数,double因此1/2 + 1/2^500无法表示.
因此,只要指数的范围不超过53个幂,你就可以做到两个幂的总和.
将此概括为其他基础:
如果分母的素数分解仅由2和5组成,则数字可以在基数10中精确表示.
如果分母的素数因子化仅包含在因式分解中找到的素数,则有理数X可以在基数中精确表示.NXN
Eri*_*hil 10
有限数可以用通用IEEE 754双精度格式表示,当且仅当它等于M•2 e时,对于某些整数M和e,使得-2 53 <M <2 53和-1074≤e≤971.
对于单精度,-2 24 <M <2 24和-149≤e≤104.
对于双精度,这些是双精度格式使用52位来存储有效数字(由于隐式1通常具有53位)并使用11位来存储指数的事实的结果.11位编码从0到2047的数字,但0和2047被排除用于特殊目的,并且编码的数字偏向1023,因此它表示从-1022到1023的无偏指数.但是,这些无偏指数用于区间中的有效数字[1,2],这些有效数字有分数.为了将有效数表示为整数,我将指数范围调整为52.单精度相似,23位用于存储24位有效数,8位用于指数,偏差为127.
使用2的幂的整数倍表示可表示的数字而不是更常见的分数有效数,简化了一些数论和其他关于浮点属性的推理.我在这个答案中使用它,因为它允许简洁地表达一组可表示的值.
| 归档时间: |
|
| 查看次数: |
4554 次 |
| 最近记录: |