我已经运行了以下代码片段:
#Physics Equations
#Default_Variables
default_path = 10000
default_time = 18000
default_ini_vel = 1
default_acceleration = 1
#Variables
path = default_path
time = default_time
ini_vel = default_ini_vel
acceleration = default_acceleration
#Compute
avg_spd = path / time
velocity = (ini_vel + (acceleration * time))
#Prints
print("Average Speed = " + str(avg_spd))
print("Velocity = " + str(velocity))
我期望代码返回一个浮点类型的值,表示包含许多小数位的平均速度。平均速度的输出等于0。为什么?
发布于 2018-08-18 18:16:54
正如其他人已经观察到的,最有可能的罪魁祸首是avg_spd = path / time
。在Py2中,这是整数除法,结果向下舍入为最接近的整数。在Py3中,这种行为已经改变,并返回可能更直观的浮点结果。
您也可以在Py2中获得这种“新”行为,方法是导入
from __future__ import division
在你的代码之上。
发布于 2018-08-18 18:14:50
/除法在python 3和python 2中的工作方式不同。假设您现在使用的是2,其中/运算符执行整数除法,即向下舍入到最接近的整数。在这种情况下,为零。可以通过在除法之前将值转换为浮点数来避免这种情况:
avg_spd = float(path) / time
发布于 2018-08-18 18:08:48
Python 3将给出一个浮点数作为两个整数的除法,而Python 2将给出一个int。
对于您的情况,当您进行除法运算时,将其中一个转换为浮点型。
https://stackoverflow.com/questions/51907424
复制相似问题