Python Flask分区错误

Python Flask division error

我需要关于python flask应用程序的帮助。我试图给用户一个他们指定的划分的结果,但它不起作用。例如,当用户提交"5"和"2"时,它返回"2"而不是"2.5"。我不知道为什么会这样。

以下是我的代码…有人知道为什么会这样吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from flask import Flask, session, render_template, request
app = Flask(__name__)
app.secret_key = 'wlFw0WP7SrNmAMF1wJaUSjWMTYdTay8EDIA3FPQhbo9c7wQ9rIdQrzJRzcN1o3mp'

@app.route('/',methods=['GET','POST'])
def index():
    [...]
    if request.method == 'POST':
        a = int(request.form['a'])
        b = int(request.form['b'])
        result = a/b
        return render_template('index.html',session=session,result=result)
    return render_template('index.html',session=session)

# Other routes omitted

if __name__ == '__main__':
    app.run(host='0.0.0.0')


在python 2中,用一个int除以另一个int将执行整数除法。

为了解决这个问题,可以将a乘以1.0,将其转换为浮点,然后除以b:

1
result = a*1.0/b

这应该给你预期的2.5,而不是2


在源代码的开头添加这一行。

1
from __future__ import division


根据所使用的Python版本,结果可能会有所不同。有关详细信息,请参阅此问题。但简而言之,为了让您看到一个浮点结果,您需要首先将数字转换为浮点,如下所示

1
2
a = float(request.form["a"])
a = float(request.form["b"])