Pythondecimalモジュールの使用法の詳細な説明

10進モジュール:10進は10進を意味し、このモジュールは10進浮動小数点演算のサポートを提供します

  1. 10進整数または文字列パラメーターに渡すことはできますが、浮動小数点データ自体が正確でないため、浮動小数点データにすることはできません。

  2. 浮動小数点データから10進型に変換するには

from decimal import *
Decimal.from_float(12.222)

結果はDecimal('12 .2219999999999995310417943983338773250579833984375 ')です。

  1. 重要な数値を設定して結果スタイルを制限する

from decimal import *
getcontext().prec = 6
Decimal(1)/Decimal(7)

結果はDecimal( '0.142857')、6つの有効な桁です

  1. 最も近い整数に丸め、小数点以下数桁を維持します

from decimal import *
Decimal(‘50.5679’).quantize(Decimal(‘0.00’))

結果はDecimal('50 .57 ')であり、結果は小数点以下2桁に丸められます。

  1. 10進数の結果は文字列に変換されます

from decimal import *
str(Decimal(‘3.40’).quantize(Decimal(‘0.0’)))

結果は「3.4」、文字列タイプです

Python3での10進処理計算精度問題の例

#! /usr/bin/python3
# coding:utf-8import decimal
from decimal import Decimal, getcontext

def demo():"""
 丸めの問題:
 ROUND_CEILINGは常に無限大になり、切り上げます
  ROUND_DOWNは常に0に向かって丸められます
  ROUND_FLOORは常に負の無限大になる傾向があり、切り捨てられます
  ROUND_HALF_DOWN最後の有効な桁が5以上の場合は、0に向かって丸めます。それ以外の場合は、0に向かって丸めます。
  ROUND_HALF_EVENはROUNDに似ています_HALF_ただし、DOWNの場合、最後の有効な桁の値が5の場合、前の桁がチェックされます。
   偶数の値では結果が切り捨てられ、奇数の値では結果が切り上げられます
  ROUND_HALF_UPはROUNDに似ています_HALF_DOWN、ただし最後の有効な桁が5の場合、値は0の反対方向に丸められます
  ROUND_UPは0の反対方向に丸められます
  ROUND_05UP最後の桁が0または5の場合は、0の反対方向に丸めます。それ以外の場合は、0に丸めます。
  """

 # 1. 日常の計算
 getcontext().prec =9
 r1 =Decimal(1)/Decimal(3)print("r1 ", r1) # r1 0.333333333

 # 2. しかし、getcontext().precには小数点前のすべての長さが含まれ、前の長さが変更された場合、小数点以下の桁数は固定できません。
 r2 =Decimal(10)/Decimal(3)print("r2 ", r2) # r2 3.33333333

 # 3. 小数点以下の桁数を制御したい場合は、decimalを使用する必要があります.quantize(Decimal('0.00000000'))、getcontextを超えることはできないことに注意してください().precの数
 r3 =Decimal(1)/Decimal(3)print("r3 ", r3.quantize(Decimal('0.00000000'))) # r3 0.33333333
 r4 =Decimal(10)/Decimal(3)print("r4 ", r4.quantize(Decimal('0.00000000'))) # r4 3.33333333
 r5 =Decimal(10)/Decimal(str(1.5))print("r5 ", r5.quantize(Decimal('0.00000000'))) # r5 6.66666667

 # 4. 切り上げ
 getcontext().rounding =getattr(decimal,'ROUND_CEILING') #常に無限大に向かって切り上げます
 r6 =Decimal(10)/Decimal(str(1.5)) # r6 6.66666667print("r6 ", r6.quantize(Decimal('0.00000000')))
 r7 =Decimal(10)/Decimal(3) # r7 3.33333334print("r7 ", r7.quantize(Decimal('0.00000000')))

 # 5. 切り捨て
 getcontext().rounding =getattr(decimal,'ROUND_FLOOR') #常に無限大に向かって切り捨てます
 r8 =Decimal(10)/Decimal(str(1.5)) # r8 6.66666666print("r8 ", r8.quantize(Decimal('0.00000000')))
 r9 =Decimal(10)/Decimal(3) # r9 3.33333333print("r9 ", r9.quantize(Decimal('0.00000000')))if __name__ =='__main__':demo()

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

Pythondecimalモジュールの使用法の詳細な説明
Python super()メソッドの原理の詳細な説明
python標準ライブラリOSモジュールの詳細な説明
Python関数パラメータ分類の原理の詳細な説明
Pythonタイマースレッドプールの原理の詳細な説明
Pythonインターフェース開発の実装手順の詳細な説明
PythonWebページパーサーの使用例の詳細な説明
Pythonオブジェクトの属性アクセスプロセスの詳細な説明
pythonに基づく残りの問題の詳細な説明(%)
pythonでのwheelの使用法
pythonシーケンスタイプの詳細な説明
Pythonでの辞書の詳細な使用法
pythonでのタプルの使用法
Python3クローラーでのAjaxの使用
PythonIOポート多重化の詳細な説明
Python仮想環境venvの使用法の詳細な説明
pythonコマンドの-uパラメーターの詳細な説明
Python推測アルゴリズムの問題の詳細な説明
Python3組み込みモジュールの使用法
Pythonでのpipの使用に関する詳細な説明|サードパーティライブラリのインストールの概要
pythonでのリストの意味と使用法
pythonがコンカレントメソッドをサポートする方法の詳細な説明
Python-モジュールの詳細な説明を要求します
Pythonに基づくデータタイプの詳細な説明
pythonのPrettytableモジュール
Pythonプロセス制御の一般的なツールの詳細な説明
Pythonの基盤を統合する(4)
Python(7)の基盤を統合する
Python(6)の基盤を統合する
Python(5)の基盤を統合する
python描画モジュールのmatplotlib
Pythonの基盤を統合する(3)
Pythonプラグインメカニズムの詳細な実装
gpg2を使用したubuntuの詳細な説明
Pythonは中国語の4つの車輪を処理します
Pythonエラー処理は詳細な説明を主張します
地主取引のPythonシミュレーション
Pythonの用途は何ですか
pythonでのosパッケージの使用
python定義クラスの簡単な使用法
Pythonモジュールの知識の完全な分析
Python文字列プーリングの前提
Python3.8の新機能の秘密
pythonモジュールを表示する方法
Pythonの父がMicrosoftに加わる
python accesshdfsの操作
pythonを実行するメソッドを終了します
Python学習OSモジュールと使用法
Ubuntu環境でのSSHのインストールと使用の詳細な説明
pythonでのrbの意味を理解する
Pythonはスタックの構造を実装できますか?
pythonインタラクティブモードの基本を学ぶ
pythonの必須パラメーターは何ですか
Python3モジュール
pythonの下部にあるロジスティック回帰
PythonはTowerofHanoiゲームを解決します
pythonの複数のバージョンの競合を解決します
python変数の範囲は何ですか
Pythonは分数シーケンスの合計を実装します
Pythonガベージコレクションメカニズムの詳細な分析
Pythonの基礎を学ぶ2日間