有时输出的数字为.0

时间:2018-10-17 08:34:30

标签: python while-loop int output

代码:

n = 18
total = 0
while n <=35:
 total += (n/2)
 print(total)
 n += 2 

输出:`

9.0
19.0
30.0
42.0
55.0
69.0
84.0
100.0
117.0`

第二个代码:

n = 40
total = 2
while n >=25:
 total += n
 print(total)
 n -= 3 `

输出:

42
79
113
144
172
197

问题:为什么第一个输出的整数后面是.0,而第二个输出却没有,尽管2个代码看起来很相似

3 个答案:

答案 0 :(得分:2)

除法运算符/在Python 3中始终产生浮点数。如果您确定//始终为偶数,或者如果确定n始终为偶数,则应使用整数除法运算符total += n // 2 。您不需要其余的东西:

[20:23:11] [INFO] --- sonar-maven-plugin:3.5.0.1254:sonar (default-cli) @ commons-vaadin ---
[20:23:11] [INFO] User cache: /var/jenkins/.sonar/cache
[20:23:17] [INFO] SonarQube version: 7.0.0
[20:23:17] [INFO] Default locale: "en_US", source code encoding: "UTF-8"
[20:23:18] [INFO] Publish mode
[20:23:18] [INFO] Load global settings

答案 1 :(得分:2)

Python3中的运算符'/'返回一个浮点数,使用整数除法'//'获得整数。

答案 2 :(得分:1)

在Python 3中,使用/运算符将两个整数相除会产生float值,例如

>>> 1/2
0.5

...也是

>>> 1/1
1.0

(在Python 2中,您将获得01!)

在第一次迭代中,您将在后续迭代中将intfloattotal += (n/2)和两个float相加。这两个加法都产生float值。

结尾的.0看起来很奇怪,因为您专门计算可以表示为整数的值。

int_a/int_b变成float(在Python 3中),即使结果可以写成整数,也只是一致。

如果将一些整数相除会产生float值,而将另外一些整数相除会产生int值,这将很奇怪。

在第二个代码段中,您仅将整数相加或相减,这会产生int值,因此看不到结尾的.0

最后,如果要强制执行整数除法,请使用//运算符。

>>> 1//2
0
>>> 1//1
1

//在Python 3中的行为类似于/在Python 2中的行为。