为什么只允许在十进制中使用小数点?为什么以下代码会报语法错误?
我可以通过一个相当直观的函数解决这个问题:
0b1011101.1101
我正在输入的数字是否存在歧义?除了 93.8125
,似乎没有其他可能代表该字符串的数字。
同样的问题也适用于其他进制:
0x5d.d
我可以通过一个相当直观的函数解决这个问题:
def base_float(number_string, base):
n = number_string.split('.')
number = int(n[0], base)
if len(n) > 1 and len(n[1]):
frac_part = float(int(n[1], base)) / base**len(n[1])
if number < 0:
frac_part = -frac_part
number += frac_part
return number
它给我提供了我所期望的表现:
>>> base_float('0b1011101.1101', 2)
93.8125
int
可以接受任意进制,但是不能包含小数点,而 float
可以包含小数点,但是只能使用十进制。为什么呢?
0b1.bit_length()
是有效的代码;如果引入二进制浮点文字,则0b1.
将成为浮点文字,而0b1.bit_length()
将成为语法错误。 - user23571121..__class__
与(1).__class__
和1.__class__
进行比较。 - Hyperboreus1.__class__
。 - user2357112float.fromhex('123.456')
。 - Mark Dickinson