Python で除算演算子を使用するときに 10 進数値を取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/117250

質問

たとえば、標準の除算記号「/」はゼロに丸められます。

>>> 4 / 100
0

ただし、0.04 を返したいと考えています。何を使えばいいでしょうか?

役に立ちましたか?

解決

次の 3 つのオプションがあります。

>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04

これは C、C++、Java などと同じ動作です。または

>>> from __future__ import division
>>> 4 / 100
0.04

引数を渡すことでこの動作をアクティブにすることもできます -Qnew Python インタプリタに次のように送信します。

$ python -Qnew
>>> 4 / 100
0.04

2 番目のオプションは Python 3.0 のデフォルトになります。古い整数の除算をしたい場合は、 // オペレーター。

編集:に関するセクションを追加 -Qnew, 、おかげで ΤΖΩΤΖΙΟΥ!

他のヒント

他の回答は、浮動小数点値を取得する方法を提案しています。これは希望に近いものになりますが、正確ではありません。

>>> 0.4/100.
0.0040000000000000001

実際に欲しい場合は、 10進数 値を指定するには、次のようにします。

>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")

これにより、4 / 100 インチであることを適切に認識するオブジェクトが得られます。 10進数 は「0.04」です。浮動小数点数は実際には基数 2 です。つまり、10進数ではなく2進数です。

次のように、項の一方または両方を浮動小数点数にします。

4.0/100.0

あるいは、Python 3.0 のデフォルトとなる機能である「真の除算」をオンにして、必要な機能を実行します。モジュールまたはスクリプトの先頭で、次の操作を実行します。

from __future__ import division

Python を見てみるのもいいかもしれません 10進数 パッケージも。これにより、適切な 10 進数の結果が得られます。

>>> decimal.Decimal('4')/100
Decimal("0.04")

整数ではなく浮動小数点値を使用するように Python に指示する必要があります。これは、入力で小数点を自分で使用するだけで簡単に行うことができます。

>>> 4/100.0
0.040000000000000001

4.0/100 を試してください

シンプルなルート 4 / 100.0

または

4.0 / 100

ここでは、以下の 2 つのケースが考えられます。

from __future__ import division

print(4/100)
print(4//100)

番号の末尾に「.0」を追加してみることもできます。

4.0/100.0

ある整数を別の整数で除算して 10 進数値を取得することはできません。その方法では常に整数が取得されます (結果は整数に切り捨てられます)。10 進数である値が少なくとも 1 つ必要です。

コールバックを含む次の関数をコードに追加します。

# Starting of the function
def divide(number_one, number_two, decimal_place = 4):
    quotient = number_one/number_two
    remainder = number_one % number_two
    if remainder != 0:
        quotient_str = str(quotient)
        for loop in range(0, decimal_place):
            if loop == 0:
                quotient_str += "."
            surplus_quotient = (remainder * 10) / number_two
            quotient_str += str(surplus_quotient)
            remainder = (remainder * 10) % number_two
            if remainder == 0:
                break
        return float(quotient_str)
    else:
        return quotient
#Ending of the function

# Calling back the above function
# Structure : divide(<divident>, <divisor>, <decimal place(optional)>)
divide(1, 7, 10) # Output : 0.1428571428
# OR
divide(1, 7) # Output : 0.1428

この機能は「Euclid 除算アルゴリズム」に基づいて動作します。この機能は、プロジェクトに外部ヘッダー ファイルをインポートしたくない場合に非常に便利です。

シンテックス:除算([除数], [除数], [小数点(オプション))

コード: divide(1, 7, 10) または divide(1, 7)

ご質問がある場合は、以下にコメントしてください。

次のように将来のライブラリから分割をインポートします。

from__future__ import division
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top