1 floating-point binary decimal
类似于十进制的二进制数也可以表示浮点数。现在我读到它可以有类似的浮点数
0.5:0.1,0.25:0.01,0.125:0.001...等等。但是,例如,如何用二进制表示0.1(十进制)?
同样,给定一个十进制浮点数,如何将其转换为等效的十进制数(如果不是那么简单的话)。
编辑:所以我知道更好的问题应该是;如何将十进制浮点数转换为二进制?现在我知道我们将小数部分相乘,直到变成零。现在很有可能两个浮点可以具有相同的表示形式吗?
给出多少位?
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)
有关更多信息,为什么十进制数字不能完全用二进制表示?