假设我们有以下上下文:
x = 3
y = 4
z = x + y
z
是int
还是float
等等?我很清楚浮点数是以.something
结尾的,但我不清楚它是否会偏向浮点数类型而不是整数类型,因为用户是否要将这个变量更改为另一种类型是不可预测的。
发布于 2016-09-05 21:13:11
当混合类型时,您总是会得到“宽”类型,其中复数比浮点数宽,而浮点数又比整数宽。当两个值都是相同类型(所以不是混合类型)时,您将得到一个类型作为结果。
Python完全支持混合算法:当二进制算术运算符具有不同数值类型的操作数时,“窄”类型的操作数被扩展到另一种操作数,其中普通整数比长整数窄,浮点比复数窄。混合类型数之间的比较使用相同的规则。
因此,当您将不同类型的数字相加时,Python会将较窄的类型扩展为与更广泛的类型相同。对于具有整数和浮点数的操作,您将得到一个浮点数,因为浮点数更宽。
但是,如果两个操作数都是相同的类型,则没有必要更改该类型。在这种情况下改变类型将是非常令人惊讶的。
发布于 2016-09-05 21:25:19
例如:
>>> type(3 + 4)
<class 'int'>
>>> type(3.0 + 4)
<class 'float'>
>>> type(3.0 + 4.0)
<class 'float'>
如果浮点数或整数之间的差异对您的应用程序很重要,请显式地将用户输入转换为浮点数,以便您知道每次处理的是什么。
user_input = float(input())
发布于 2016-09-05 22:16:04
这很容易测试。默认情况下,如果对两个整数执行算术,Python将将结果存储为整数。你可以在这里看到。
>>> x = 1
>>> y = 2
>>> z = x + y
>>> type(z)
<class 'int'>
type函数将告诉您在Python中对象的类型是什么。这里我们可以看到z变量的类型是int,它代表整数。
如果我们要对两种不同的类型(例如整数和浮点数)执行算术,并且结果是十进制,那么结果将被存储为浮点数。
>>> x = 2.55
>>> y = 3
>>> z = x / 3
>>> type(z)
<class 'float'>
现在,如果要对整数和浮点数执行算术,结果将以非十进制形式出现,Python仍然会将其存储为浮点数。你可以在这里看到。
>>> x = 2.5
>>> y = 1.25
>>> z = x / y
>>> type(z)
<class 'float'>
>>> print(z)
2.0
总之,在执行算术时,Python只在涉及的两个数字也是整数的情况下才会将结果存储为整数。如果一个变量是浮点数,那么新变量也将是浮点数类型(或类)。
希望这会有所帮助:)
https://stackoverflow.com/questions/39337729
复制相似问题