为了账号安全,请及时绑定邮箱和手机立即绑定

数字输出有时有 .0

数字输出有时有 .0

至尊宝的传说 2021-07-07 14:08:27
代码:n = 18total = 0while n <=35: total += (n/2) print(total) n += 2 输出:`9.019.030.042.055.069.084.0100.0117.0`第二个代码:n = 40total = 2while n >=25: total += n print(total) n -= 3 `输出:4279113144172197问题:为什么第一个输出在整数后面有 .0 而第二个输出没有,尽管 2 个代码看起来相似
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

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


>>> 1/2

0.5

... 但是也


>>> 1/1

1.0

(在 Python 2 中,你会得到0和1!)


在第一次迭代中,要添加int,并float与total += (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 中一样。


查看完整回答
反对 回复 2021-07-21
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

除法运算符/在 Python 3 中总是产生一个浮点数。//如果你确定它n总是偶数,或者如果你不需要余数,你应该改用整数除法运算符:

total += n // 2


查看完整回答
反对 回复 2021-07-21
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

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


查看完整回答
反对 回复 2021-07-21
  • 3 回答
  • 0 关注
  • 323 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信