在python中,将字符串转换为浮点数时,float()
将整数或十进制表示形式都转换为数字:
float('3.5')
给出3.5
float('3')
给出3
float()
还将整数转换为浮点数:
float(3)
给出3.0
如果int()
可以将浮点数转换为整数,为什么不将十进制字符串转换为整数?例如:
int(3.5)
给出3
,
但是int('3.5')
引发了ValueError
异常。
当想要将字符串转换为整数而又不知道数字是否为小数时,这会使用int(float('3.5'))
之类的东西。
为什么float()
和int()
之间有区别?
答案 0 :(得分:0)
我会说,为什么不呢?
这更像是转换的预防措施。由于转换会以意想不到的方式丢失数据精度,因此它会尝试谨慎和保守。通过说int(float("3.5"))
,您的意图是明确的。但是int("3.5")
-您是否期望它不是整数,并且准备放弃那0.5的差异? float("3.5")
中不存在此类问题。
如果您希望int("3.5")
退还给您整数而不引起错误,是否自然也要求int("four")
,int("3.5 # ignore this comment")
,int("XLII")
有效?那太过分了。