如何用二进制表示浮点数。电气工程师学会

1 floating-point binary decimal

类似于十进制的二进制数也可以表示浮点数。现在我读到它可以有类似的浮点数

0.50.10.250.010.1250.001...等等。但是,例如,如何用二进制表示0.1(十进制)?

同样,给定一个十进制浮点数,如何将其转换为等效的十进制数(如果不是那么简单的话)。

编辑:所以我知道更好的问题应该是;如何将十进制浮点数转换为二进制?现在我知道我们将小数部分相乘,直到变成零。现在很有可能两个浮点可以具有相同的表示形式吗?

Chr*_*our 5

给出多少位?

0.1b:

0.00011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011...
Run Code Online (Sandbox Code Playgroud)

如您所见,这是一个近似值。

Binary                                          Decimal
0.1     == 1/2^1         == 1/2              == 0.5
0.01    == 1/2^2         == 1/4              == 0.25
0.11    == 1/2^1 + 1/2^2 == 1/2 + 1/4 == 3/4 == 0.75
Run Code Online (Sandbox Code Playgroud)

小数点后的每一位代表1/2 ^(position_after_bit_string)。

postion:   |1|2|3|4|5|6|7|
         0.|0|0|0|0|0|0|1|
Run Code Online (Sandbox Code Playgroud)

所以 0.0000001 = 1/2^7 = 0.0078125

伪代码:

decimal_value = 0 
for i, bit in enumerate(binary_string):
    if bit == 1
         decimal_value += 1/2**i
Run Code Online (Sandbox Code Playgroud)

有关更多信息,为什么十进制数字不能完全用二进制表示?

  • @Sahil:将数字转换为浮点数时(例如,通过解析包含数字的字符串并将其转换为浮点数),不同的数字可以产生相同的结果。说浮点结果代表这些数字是不精确的。根据IEEE 754标准,浮点值正好表示一个数字,通过解释标准中指定的编码即可得到一个数字。您可以说两个不同的数字在浮点数上可能具有相同的近似值,但请务必记住,这只是一个近似值。 (3认同)