int()和float()的行为不一致

时间:2019-04-09 18:56:56

标签: python floating-point int

在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()之间有区别?

1 个答案:

答案 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")有效?那太过分了。