Python で除算演算子を使用するときに 10 進数値を取得するにはどうすればよいですか?
-
02-07-2019 - |
質問
たとえば、標準の除算記号「/」はゼロに丸められます。
>>> 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