简单的Python计算是错误的

简单的Python计算是错误的,python,python-2.7,math,floating-point,division,Python,Python 2.7,Math,Floating Point,Division,这可能是我很愚蠢,但请看下面的代码 我正在努力计算在我运行脚本时,我已经消耗的碳水化合物目标的百分比。我得到总数并将其存储在carbsConsumed和carbsGoal中。carbsPercent然后计算消耗的百分比。但是,carbsPercent每次返回0。有什么想法吗 #!/usr/bin/env python2.7 import myfitnesspal from datetime import datetime username = 'someusername' password =

这可能是我很愚蠢,但请看下面的代码

我正在努力计算在我运行脚本时,我已经消耗的碳水化合物目标的百分比。我得到总数并将其存储在carbsConsumed和carbsGoal中。carbsPercent然后计算消耗的百分比。但是,carbsPercent每次返回0。有什么想法吗

#!/usr/bin/env python2.7
import myfitnesspal
from datetime import datetime

username = 'someusername'
password = 'somepassword'

date = datetime.now()


client = myfitnesspal.Client(username, password)
day = client.get_date(date.year, date.month, date.day)
#day = client.get_date(2015,11,12)

carbs = 'carbohydrates'

carbsConsumed = day.totals[carbs]
carbsGoal = day.goals[carbs]
carbsPercent = (carbsConsumed / carbsGoal) * 100

print 'Carbs consumed: ' + str(carbsConsumed)
print 'Carbs goal: ' + str(carbsGoal)
print 'Percentage consumed: ' + str(carbsPercent)
试试这个:

 carbsPercent = (float(carbsConsumed) / carbsGoal) * 100

问题是在Python2.7中,默认的除法模式是整数除法,因此1000/1200=0。强制Python更改的方式是将除法运算中的至少一个操作数强制转换为浮点。

有关python2中易于移植的代码,请参阅:

例如


或100。*carbsConsumed/carbsGoalCorrect,但这只适用于100。是第一位。如果使用OP代码中的顺序,它将不起作用。我相信alvas下面的解决方案,即使用浮点除法运算符,代码不会太混乱,并且在升级到python3时会自然消失。
from __future__ import division
carbsPercent = (carbsConsumed / carbsGoal) * 100
$ python
>>> from __future__ import division
>>> 6 / 5
1.2

$ python3
>>> 6 / 5
1.2