0

重複の可能性:
この分割が Python で機能しないのはなぜですか?

私はこれを持っており、正常に動作します

def roi(stake, profit):
    your_roi = profit / stake * 100
    return your_roi

def final_roi():
    roi1 = roi(52, 7.5)
    print "%.2f"  % roi1

final_roi()

しかし、利益の数値を int に変更すると (賭け金と利益の両方が int 値になることを意味します)、たとえば 52, 7 のようにすると、出力は 0.00 になります。何が問題なのですか?精度が 2 の float にフォーマットされていると思いました。

4

2 に答える 2

1

python2.x では、/両方の引数が整数型の場合、整数除算を行います (結果は整数で、下方向に切り捨てられます)。「簡単な」修正は次のとおりです。

from __future__ import division

スクリプトの一番上に置くか、分割する前に引数の 1 つから float を作成します。

your_roi = float(profit) / stake * 100

Python には整数除算演算子 ( //) もあるため、必要に応じて整数除算を実行できます。from __future__ import division

于 2013-01-28T15:45:28.197 に答える
0

利益がの場合integer、除算は二重除算ではなく整数除算になり、結果は最も近い整数に切り捨てられます。数値をfloatwehn印刷用にフォーマットしても、上記の割り当てで切り捨てられるため、0のままになります。

于 2013-01-28T15:45:41.880 に答える