简单的Python计算是错误的

Mik*_*oli 0 python math floating-point division python-2.7

现在这可能是我在这里非常愚蠢,但请看下面的代码.

我正在尝试计算出我运行脚本时我已经消耗的碳水化合物目标的百分比.我得到总数并存储在carbsConsumedcarbsGoal.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)
Run Code Online (Sandbox Code Playgroud)

gar*_*epy 5

试试这个:

 carbsPercent = (float(carbsConsumed) / carbsGoal) * 100
Run Code Online (Sandbox Code Playgroud)

问题是在Python 2.7中,默认的除法模式是整数除法,因此1000/1200 = 0.强制Python改变的方法是将至少一个操作数IN THE DIVISION操作转换为浮点数.

  • 我相信下面的alvas解决方案,使用float division运算符,会减少代码的混乱,并在升级到python3时自然消失. (2认同)