web-dev-qa-db-ja.com

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

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

>>> 4 / 100
0

ただし、0.04を返すようにします。何を使用しますか?

60
Ray Vega

次の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。のデフォルトです。古い整数の除算が必要な場合は、//演算子を使用する必要があります。

Edit-Qnewに関するセクションを追加しました。 ΤΖΩΤΖΙΟΥ

126
Torsten Marek

他の答えは、浮動小数点値を取得する方法を示唆しています。このwlilはあなたが望むものに近いものですが、正確ではありません:

>>> 0.4/100.
0.0040000000000000001

実際にdecimal値が必要な場合は、次のようにします。

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

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

24
Glyph

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

4.0/100.0

または、Python 3.0、 'true division'でデフォルトになる機能をオンにします。これは、必要なことを行います。モジュールまたはスクリプトの上部で、次を実行します。

from __future__ import division
7
Thomas Wouters

Pythonの decimal パッケージもご覧ください。これにより、ニースの10進数の結果が得られます。

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

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

>>> 4/100.0
0.040000000000000001
3
moonshadow

4.0/100を試す

1
Martin Cote

単純なルート4/100.0

または

4.0/100

1
torial

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

from __future__ import division

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

番号の最後に「.0」を追加することもできます。

4.0/100.0

1
Appu

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

0
Vasil

コールバックを使用してコードに次の関数を追加します。

_# 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
_

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

Syntex:Divide([divident]、[divisor]、[decimal place(optional)))

コード:divide(1, 7, 10) OR divide(1, 7)

クエリについては以下にコメントしてください。

0
DaredevilRanon