Ian*_*oyd 2 floating-point precision computer-science
我们都知道,有些十进制值在二进制中没有精确的表示。
例如十进制值0.1
。
在 IEEE 浮点格式中,它可以具有不同的表示形式,具体取决于您要专用于表示浮点值的位数。
单精度(32 位)
双精度(64 位)
扩展精度(80 位)
换句话说,十进制值0.1
在二进制中没有精确的表示,它是无休止的重复值:
0.0 0011 0011 0011 0011 0011 0011 0011 0011 ...
0.0 ?0?0?1?1
Run Code Online (Sandbox Code Playgroud)
以同样的方式 1?3 没有精确的十进制表示——它在“小数点”之后的数字永远重复:
0.33333 33333 33333 33333 33333 33333 33333 ...
0.?3
Run Code Online (Sandbox Code Playgroud)
二进制中是否有任何值在十进制中没有精确表示?
我为什么要问?扩大理解的范围,增加人类知识的总和。
编辑:当链接的问题与我的完全相反时,我不知道为什么有人投票关闭作为重复。
不,每个二进制浮点数都有一个精确的十进制表示。
在二进制浮点的精确表示的数字正是那些可与分母是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 的质因数,反之则不然。
归档时间: |
|
查看次数: |
30 次 |
最近记录: |